Sie können eine E-Mail senden, die aus einer MIME-Nachricht erstellt wurde.
Sie können eine MIME-Nachricht mithilfe des MIME-Parsers an den EmailOutput-Knoten weitergeben, der mit dem MIME-Parser die MIME-Nachricht in einen Bitstrom schreibt. Diese Nachricht wird dann an die Liste der Empfänger im EmailOutputHeader gesendet. Überschreibungen der lokalen Umgebung werden nicht berücksichtigt, wenn eine MIME-Nachricht übergeben wird. In den folgenden Beispielen muss der EmailOutput-Knoten nicht konfiguriert werden.
Die folgenden Beispiele veranschaulichen die Einrichtung der Informationen zu Empfänger, Absender, Betreff, SMTP-Server und Nachrichtenhauptteil in ESQL (bei einem Compute-Knoten) und in Java™ (bei einem JavaCompute-Knoten).
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();
-- Empfängerinformation zum EmailOutputHeader hinzufügen
SET OutputRoot.EmailOutputHeader.To = '<E-Mail-Adresse des Empfängers>';
SET OutputRoot.EmailOutputHeader.Cc = '<E-Mail-Adresse des Empfängers>';
SET OutputRoot.EmailOutputHeader.Bcc = '<E-Mail-Adresse des Empfängers>';
-- Absenderinformation zum EmailOutputHeader hinzufügen
SET OutputRoot.EmailOutputHeader.From = '<E-Mail-Adresse des Absenders>';
SET OutputRoot.EmailOutputHeader."Reply-To" = '<Antwort-E-Mail-Adresse>';
-- Betreff zum EmailOutputHeader hinzufügen
SET OutputRoot.EmailOutputHeader.Subject = 'Dynamische MIME-Nachricht in ESQL.';
-- SMTP-Serverinformationen zur LocalEnvironment hinzufügen
SET OutputLocalEnvironment.Destination.Email.SMTPServer ='<SMTP.Server:Port>';
-- Neuen MIME-Nachrichteninhalt erstellen, der als Haupttext der E-Mail,
-- einschließlich eines Anhangs, gesendet wird
CREATE FIELD OutputRoot.MIME TYPE Name;
DECLARE M REFERENCE TO OutputRoot.MIME;
-- Content-Type-Unterelement von MIME explizit erstellen, um richtige Reihenfolge -- sicherzustellen. Wird stattdessen die Eigenschaft ContentType festgelegt,
-- kann das Feld als letztes Unterelement von MIME auftreten.
CREATE FIELD M."Content-Type" TYPE NameValue VALUE 'multipart/related; boundary=myBoundary';
CREATE FIELD M."Content-ID" TYPE NameValue VALUE 'neues MIME-Dokument';
CREATE LASTCHILD OF M TYPE Name NAME 'Parts';
CREATE LASTCHILD OF M.Parts TYPE Name NAME 'Part';
DECLARE P1 REFERENCE TO M.Parts.Part;
-- Erster Teil:
-- Hauptteil der E-Mail erstellen.
-- Der Text der E-Mail lautet 'Dies ist der Hauptteil der E-Mail.'.
CREATE FIELD P1."Content-Type" TYPE NameValue VALUE 'text/plain; charset=us-ascii';
CREATE FIELD P1."Content-Transfer-Encoding" TYPE NameValue VALUE '8bit';
CREATE LASTCHILD OF P1 TYPE Name NAME 'Data';
CREATE LASTCHILD OF P1.Data DOMAIN('BLOB') PARSE(CAST('Dies ist der Hauptteil der E-Mail.'
AS BLOB CCSID 1208));
CREATE LASTCHILD OF M.Parts TYPE Name NAME 'Part';
DECLARE P2 REFERENCE TO M.Parts.Part[2];
-- Zweiter Teil:
-- Anhang einer E-Mail erstellen.
-- Der Anhang heißt 'attachment.txt' und enthält den Text 'Dies ist ein Anhang.'.
CREATE FIELD P2."Content-Type" TYPE NameValue VALUE 'text/plain; charset=us-ascii; name=attachment.txt';
CREATE FIELD P2."Content-Transfer-Encoding" TYPE NameValue VALUE '8bit';
CREATE LASTCHILD OF P2 TYPE Name NAME 'Data';
CREATE LASTCHILD OF P2.Data DOMAIN('BLOB') PARSE(CAST('Dies ist ein Anhang.' AS BLOB CCSID 1208));
RETURN TRUE;
END;
public void evaluate(MbMessageAssembly assembly) throws MbException {
MbOutputTerminal out = getOutputTerminal("out");
MbOutputTerminal fail = getOutputTerminal("fail");
// Neue Assemblierung für Weitergabe aus diesem Knoten erstellen, so wie
// sie aktualisiert werden soll.
MbMessage outMessage = new MbMessage();
copyMessageHeaders(assembly.getMessage(), outMessage);
MbMessage outLocalEnv = new MbMessage(assembly.getLocalEnvironment());
MbMessage outExceptionList = new MbMessage(assembly.getExceptionList());
MbMessageAssembly outAssembly = new MbMessageAssembly(assembly, outLocalEnv, outExceptionList, outMessage);
MbElement localEnv = outAssembly.getLocalEnvironment().getRootElement();
// EmailOutputHeader-Parser erstellen. Hier werden Empfänger, Absender
// und Betreff hinzugefügt.
MbElement root = outMessage.getRootElement();
MbElement SMTPOutput = root.createElementAsLastChild("EmailOutputHeader");
// Empfängerinformation zum EmailOutputHeader hinzufügen
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "To", "<E-Mail-Adresse des Empfängers>");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Cc", "<E-Mail-Adresse des Empfängers>");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Bcc", "<E-Mail-Adresse des Empfängers>");
// Absenderinformation zum EmailOutputHeader hinzufügen
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "From", "<E-Mail-Adresse des Absenders>");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Reply-To", "<Antwort-E-Mail-Adresse>");
// Betreff zum EmailOutputHeader hinzufügen
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Subject", "Dynamische MIME-Nachricht in Java.");
// Destination.Email erstellen. Hier werden SMTP-Serverinformationen hinzugefügt.
MbElement Destination = localEnv.createElementAsLastChild(MbElement.TYPE_NAME, "Ziel", null);
MbElement destinationEmail = Destination.createElementAsLastChild(MbElement.TYPE_NAME, "Email", null);
destinationEmail.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "SMTPServer", "<SMTP.Server:Port>");
// Letztes untergeordnetes Element des Stammelements (Nachrichteninhalt) als MIME festlegen
MbElement MIME = root.createElementAsLastChild("MIME");
// Content-Type-Unterelement von MIME explizit erstellen, um richtige Reihenfolge sicherzustellen
MIME.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Content-Type", "multipart/related;
boundary=myBoundary");
MIME.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Content-ID", "neues MIME-Dokument");
MbElement parts = MIME.createElementAsLastChild(MbElement.TYPE_NAME, "Parts", null);
MbElement part, data, blob;
String text;
// Erster Teil:
// Hauptteil der E-Mail erstellen.
// Der Text der E-Mail lautet 'Dies ist der Hauptteil der E-Mail.'.
part = parts.createElementAsLastChild(MbElement.TYPE_NAME, "Part", null);
part.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Content-Type", "text/plain; charset=us-ascii");
part.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Content-Transfer-Encoding", "8bit");
data = part.createElementAsLastChild(MbElement.TYPE_NAME, "Data", null);
blob = data.createElementAsLastChild("BLOB");
text = "Dies ist der Hauptteil der E-Mail.";
try {
blob.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", text.getBytes("UTF8"));
} catch (UnsupportedEncodingException e) {
fail.propagate(outAssembly);
}
// Zweiter Teil:
// Anhang einer E-Mail erstellen.
// Der Anhang heißt 'attachment.txt' und enthält den Text 'Dies ist ein Anhang.'.
part = parts.createElementAsLastChild(MbElement.TYPE_NAME, "Part", null);
part.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Content-Type", "text/plain; charset=us-ascii; name=attachment.txt");
part.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Content-Transfer-Encoding", "8bit");
data = part.createElementAsLastChild(MbElement.TYPE_NAME, "Data", null);
blob = data.createElementAsLastChild("BLOB");
text = "Dies ist ein Anhang.";
try {
blob.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", text.getBytes("UTF8"));
} catch (UnsupportedEncodingException e) {
fail.propagate(outAssembly);
}
outMessage.finalizeMessage(MbMessage.FINALIZE_VALIDATE);
out.propagate(outAssembly);
}