import java.io.*;
import java.util.*;
-public class Script extends Target {
+public class Script extends JS.Obj implements Target {
private static final JS.Method METHOD = new JS.Method();
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");
case "mail.my.prefs": try {
return new org.ibex.js.Directory(new File("/etc/org.ibex.mail.prefs"));
case "mail.my.mailbox":
FileBasedMailbox root = FileBasedMailbox.getFileBasedMailbox(Mailbox.STORAGE_ROOT, true);
return root.slash("user", true).slash("megacz", true).slash("newmail", true);
+ case "mail.list": return METHOD;
//#end
- if (JSU.toString(name).startsWith("list.")) { return MailingList.getList(JSU.toString(name).substring(5)); }
return super.get(name);
}
final int nargs = args.length;
String name = JSU.toString(name0);
try {
+ if (name.equals("mail.list")) return MailingList.getMailingList(JS.toString(args[0])).acceptor;
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 = "";
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 JSTarget() {
+ public void accept(Message m) throws MailException {
+ try {
+ Message m2 = m.bounce(JSU.toString(a));
+ org.ibex.mail.protocol.SMTP.Outgoing.accept(m2);
+ Log.error(this, "BOUNCING! " + m2.summary());
+ } catch (Exception e) {
+ Log.warn(this, e);
+ }
+ } };
}
if (name.equals("mail.forward2") || name.equals("forward2")) {
try {
}
return null;
}
- if (name.equals("mail.forward") || name.equals("forward")) { return new Target() {
- public void accept(Message m) throws MailException {
- try {
- Message m2 = Message.newMessage(m, m.envelopeFrom, new Address(JSU.toString(a)));
- org.ibex.mail.protocol.SMTP.Outgoing.accept(m2);
- } catch (Exception e) {
- throw new MailException(e.toString());
- }
- }
- }; }
+ if (name.equals("mail.forward") || name.equals("forward")) {
+ Message m2 = Message.newMessage(Script.this.m, Script.this.m.envelopeFrom, new Address(JSU.toString(a)));
+ org.ibex.mail.protocol.SMTP.Outgoing.attempt(m2);
+ return Drop.instance;
+ }
if (name.equals("log.debug") || name.equals("debug")) { JSU.debug(a== null ? "**null**" : JSU.toString(a)); return null; }
if (name.equals("log.info") || name.equals("info")) { JSU.info(a== null ? "**null**" : JSU.toString(a)); return null; }
if (name.equals("log.warn") || name.equals("warn")) { JSU.warn(a== null ? "**null**" : JSU.toString(a)); return null; }
}
};
}
+
+ private static abstract class JSTarget extends JS.Obj implements Target { }
}