package org.ibex.mail.target;
import org.ibex.js.*;
+import org.ibex.io.*;
import org.ibex.util.*;
import org.ibex.mail.*;
import org.ibex.mail.filter.*;
case "mail.send": return METHOD;
case "mail.attempt": return METHOD;
case "mail.later": return Later.instance;
- case "mail.drop": return Drop.instance;
+ case "mail.drop": return METHOD;
+ case "mail.razor": return getSub("mail.razor");
+ case "mail.razor.check": return METHOD;
+ case "mail.dcc": return getSub("mail.dcc");
+ case "mail.dcc.check": return METHOD;
case "mail.bounce": return METHOD;
- case "mail.error": return METHOD;
+ case "mail.reject": 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"));
if (!ok && !attempt) throw new JSExn("SMTP server rejected message");
return JSU.B(ok);
}
+ if (name.equals("mail.razor.check")) {
+ Process p = Runtime.getRuntime().exec("razor-check");
+ ((Message)args[0]).getStream().transcribe(new Stream(p.getOutputStream()), true);
+ return JSU.N(p.waitFor());
+ }
+ if (name.equals("mail.dcc.check")) {
+ Process p = Runtime.getRuntime().exec(new String[] { "dccproc", "-H" });
+ ((Message)args[0]).getStream().transcribe(new Stream(p.getOutputStream()), true);
+ StringBuffer ret = new StringBuffer();
+ new Stream(p.getInputStream()).transcribe(ret);
+ p.waitFor();
+ return JSU.S(ret.toString());
+ }
+ if (name.equals("mail.drop")) {
+ return args.length==0 ? new Drop() : new Drop(JSU.toString(args[0]));
+ }
if (name.equals("mail.bounce")) {
return new JSTarget() {
public void accept(Message m) throws MailException {
}
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);
+ org.ibex.mail.protocol.SMTP.Outgoing.attempt(m2, false);
return Drop.instance;
}
- if (name.equals("mail.error"))
- throw new MailException.Malformed(JSU.toString(a));
+ if (name.equals("mail.reject"))
+ return new Reject(JSU.toString(a));
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; }