added synchronous send via SMTP
authoradam <adam@megacz.com>
Fri, 18 Mar 2005 09:10:24 +0000 (09:10 +0000)
committeradam <adam@megacz.com>
Fri, 18 Mar 2005 09:10:24 +0000 (09:10 +0000)
darcs-hash:20050318091024-5007d-1dc898bb4c633d830aeb5e359ffa2fc8b1835765.gz

src/org/ibex/mail/target/Script.java

index 2f00ca4..6a7395a 100644 (file)
@@ -115,6 +115,8 @@ public class Script extends Target {
             case "mail.forward": return METHOD;
             case "mail.forward2": return METHOD;
             case "mail.send": return METHOD;
+            case "mail.attempt": return METHOD;
+            case "mail.later": return Later.instance;
             case "mail.drop": return Drop.instance;
             case "mail.bounce": return METHOD;
             case "mail.my": return getSub("mail.my");
@@ -137,7 +139,8 @@ public class Script extends Target {
             String name = JSU.toString(name0);
             try {
                 if (name.equals("date")) { return new JSDate(args); }
-                if (name.equals("mail.send") || name.equals("send")) {
+                if (name.equals("mail.send") || name.equals("send") || name.equals("mail.attempt") || name.equals("attempt")) {
+                    boolean attempt = name.equals("mail.attempt") || name.equals("attempt");
                     JS m = (JS)a;
                     StringBuffer headers = new StringBuffer();
                     String body = "";
@@ -160,10 +163,20 @@ public class Script extends Target {
                                            envelopeFrom,
                                            envelopeTo
                                            );
-                    //org.ibex.mail.protocol.SMTP.Outgoing.accept(message);
-                    boolean ok = org.ibex.mail.protocol.SMTP.Outgoing.attempt(message);
-                    if (!ok) throw new JSExn("SMTP server rejected message");
-                    return JSU.T;
+                    
+                    boolean ok = false;
+                    try {
+                        if (attempt) {
+                            org.ibex.mail.protocol.SMTP.Outgoing.attempt(message);
+                        } else {
+                            org.ibex.mail.protocol.SMTP.Outgoing.accept(message);
+                        }
+                        ok = true;
+                    } catch (Exception ex) {
+                        if (!attempt) Log.warn(this, ex);
+                    }
+                    if (!ok && !attempt) throw new JSExn("SMTP server rejected message");
+                    return JSU.B(ok);
                 }
                 if (name.equals("mail.bounce")) {
                     return new Target() {