Senden einer E-Mail

Gelegentlich gibt es die Anforderung, das jadice server Dokumente in ein anderes Format konvertieren und nicht an die anfordernde Anwendung zurücksenden, sondern stattdessen die Dokumente per E-Mail an einen externen Empfänger schicken soll.

Mit Hilfe eines groovy-Scripts, das im Klassenpfad von jadice server abgelegt wird, und der JavaMail API, auf die dieses groovy-Script zugreift, kann diese Anforderung leicht erfüllt werden. Das groovy-Script finden Sie in Github unter https://github.com/levigo/jadice-server-groovy/blob/master/SendMail.groovy.

Die Ansteuerung dieses Scripts ist relativ simpel:

Ansteuerung des Scripts "SendMail.groovy"
final Job job = ...;
final File[] attachments = ...;


final StreamInputNode si = new StreamInputNode();
final ScriptNode scriptNode = new ScriptNode();
scriptNode.setScript(new URI("resource:/<PathTo>/SendMail.groovy"));
scriptNode.getParameters().put("host", ...);
scriptNode.getParameters().put("username", ...);
scriptNode.getParameters().put("password", ...);
scriptNode.getParameters().put("from", ...);
scriptNode.getParameters().put("to", ...);
job.attach(
  si
  .appendSuccessor(scriptNode)
   // ScriptNode requires a successor even if there will be no data in this case
  .appendSuccessor(new NullNode())
);
job.submit();
// Send the attachments
for (File f : attachments) {
  System.out.println("Adding file " + f.getName());
  final StreamDescriptor sd = new StreamDescriptor();
  // Important: Set filename here so that the attachment will have a filename too
  sd.setFileName(f.getName());
  si.addStream(new FileInputStream(f), sd);
}
si.complete();

Die Zugangsdaten für den SMTP-Server, über den die Mail gesendet werden soll, wird in den Script-Parameter host, username und password eingetragen. from und to bestimmen Absender und Empfänger.

Der Betreff und der Body im HTML-Format sind im groovy-Script vordefiniert, können aber in gleicher Weise mit den Script-Parametern subject und mailBody überschrieben werden.

Nach dem Abschicken des Jobs an jadice server werden die Datenströme, die als Attachment versendet werden sollen, über den StreamInputNode an jadice server geschickt und vom groovy-Script an die E-Mail angehängt. Wichtig ist hierbei, dass die Dateien, die via Mail verschickt werden sollen, einen Dateinamen erhalten. Insbesondere wenn zusätzlich Konvertierungsschritte im Workflow zwischengeschaltet werden, kann dies u.U. durch jadice server nicht automatisch sichergestellt werden.

Die vollständige Demo-Klasse finden Sie in Github unter https://gist.github.com/geissebn/83b98ecbd45946c79b27