Puede producir un mensaje de correo electrónico en el servidor SMTP, la lista de destinatarios, el asunto, el texto y varios archivos adjuntos se determinan todos en el tiempo de ejecución.
Puede crear un flujo de mensajes que produzca un correo electrónico con varios adjuntos. Para configurar un nodo EmailOutput para enviar un correo electrónico con un solo adjunto, un asunto estático y texto estático a una lista estática de destinatarios, consulte Enviar un correo electrónico con un adjunto.
Las propiedades del nodo que establezca cuando envíe un mensaje de correo electrónico pueden ser opcionales, y se puedan alterar temporalmente en el tiempo de ejecución mediante los valores que especifique en el entorno local, la cabecera de salida de correo electrónico (EmailOutputHeader) o el cuerpo del mensaje. Para utilizar este método, los nodos anteriores del flujo de mensajes deben construir estas alteraciones temporales. Cuando no se especifica un valor de texto en las propiedades del nodo para el cuerpo principal del correo electrónico, se utiliza el cuerpo del mensaje que se pasa al nodo EmailOutput.
En los siguientes ejemplos se muestra cómo establecer el destinatario, emisor, tema, servidor SMTP, y la información del cuerpo del mensaje en ESQL (con un nodo Compute) y Java™ (con un nodo JavaCompute).
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();
-- Añadir información de destinatario a EmailOutputHeader
SET OutputRoot.EmailOutputHeader.To = '<dirección de correo electrónico del destinatario>';
SET OutputRoot.EmailOutputHeader.Cc = '<dirección de correo electrónico del destinatario>';
SET OutputRoot.EmailOutputHeader.Bcc = '<dirección de correo electrónico del destinatario>';
-- Añadir información de remitente a EmailOutputHeader
SET OutputRoot.EmailOutputHeader.From = '<dirección de correo electrónico del remitente>';
SET OutputRoot.EmailOutputHeader."Reply-To" = '<dirección de correo electrónico de respuesta>';
-- Añadir asunto a EmailOutputHeader
SET OutputRoot.EmailOutputHeader.Subject = 'Sustituido por el nodo ESQL compute.';
-- Añadir información de servidor SMTP a LocalEnvironment
SET OutputLocalEnvironment.Destination.Email.SMTPServer ='<smtp.server:port>';
-- Crear un nuevo cuerpo del mensaje, que se enviará como el texto principal del mensaje de correo electrónico.
SET OutputRoot.BLOB.BLOB = CAST('Éste es el nuevo texto para el cuerpo del mensaje de correo electrónico.' AS BLOB CCSID 1208);
RETURN TRUE;
END;
DECLARE crlf CHAR CAST(X’0D0A’ AS CHAR CCSID 1208);
DECLARE myEmailBodyTxt CHAR;
SET myEmailBodyTxt [equals char] 'this is the first line' || crlf ||
'this is the second line' || crlf ||
'this is the third line';
SET OutputRoot.BLOB.BLOB = CAST(myEmailBodyTxt AS BLOB CCSID 1208);
public void evaluate(MbMessageAssembly assembly) throws MbException {
MbOutputTerminal out = getOutputTerminal("out");
// Crear un nuevo conjunto para propagar fuera de este nodo, ya que queremos actualizarlo
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();
// Crear el analizador de EmailOutputHeader. Aquí es donde añadimos la información del destinatario, remitente y tema.
MbElement root = outMessage.getRootElement();
MbElement SMTPOutput = root.createElementAsLastChild("EmailOutputHeader");
// Añadir información de destinatario a EmailOutputHeader
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "A", "<dirección de correo electrónico del destinatario");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Cc", "<dirección de correo electrónico del destinatario");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Cco", "<dirección de correo electrónico del destinatario");
// Añadir información de remitente a EmailOutputHeader
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "De", "<dirección de correo electrónico del remitente>");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Responder a", "<dirección de correo electrónico de respuesta>");
// Añadir información de asunto a EmailOutputHeader
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Asunto", "Sustituido por el nodo Java compute.");
// Crear Destination.Email. Aquí es donde añadimos la información del servidor SMTP
MbElement Destination = localEnv.createElementAsLastChild(MbElement.TYPE_NAME, "Destino", null);
MbElement destinationEmail = Destination.createElementAsLastChild(MbElement.TYPE_NAME, "Correo electrónico", null);
destinationEmail.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Servidor SMTP", "<smtp.server:port>");
// Establecer el último hijo de la raíz (cuerpo del mensaje)
MbElement BLOB = root.createElementAsLastChild(MbBLOB.PARSER_NAME);
String text = "Éste es el nuevo texto para el cuerpo del mensaje de correo electrónico";
BLOB.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", text.getBytes());
outMessage.finalizeMessage(MbMessage.FINALIZE_VALIDATE);
out.propagate(outAssembly); }
Entorno local | Descripción |
---|---|
Destination.Email.SMTPServer | El servidor:puerto del servidor SMTP. El puerto es opcional; si no lo especifica, el valor predeterminado es 25. |
Destination.Email.SecurityIdentity | La identidad de seguridad para la autenticación con el servidor SMTP, que puede ser el nombre del par de ID de usuario y contraseña que se define con el mandato mqsisetdbparms, o puede hacer referencia a un recurso externo que tiene un atributo securityIdentity que hace referencia a un ID de usuario y una contraseña que se ha definido con el mandato mqsisetdbparms. En ambos casos, el valor se añade después de la serie “smtp::”. Por ejemplo, si utiliza el mandato mqsisetdbparms para crear un ID de usuario y contraseña de smtp::myUseridPassword, securityIdentity que se especifica en el nodo, o indirectamente en un recurso externo, es myUseridPassword. |
Destination.Email.BodyContentType | Identifica que el cuerpo del correo electrónico contiene HTML en vez texto sin formato. Puede establecer esta propiedad en text/plain, text/html, o text/xml; text/plain es el valor predeterminado. |
Destination.Email.MultiPartContentType | El tipo de varias partes: related, mixed y alternative. Puede establecer el valor que desee. |
Destination.Email.Attachment.Content | El adjunto real (BLOB/text) o una expresión XPath o ESQL que hace referencia a un elemento; por ejemplo, un elemento del árbol de mensajes o Entorno local. El valor del elemento al que se hace referencia se toma como el contenido del adjunto.
|
Destination.Email.Attachment.ContentType | El tipo de adjunto (también conocido como Internet Media Type), incluidos text/plain, text/html y text/xml. Puede establecer el valor que desee. |
Destination.Email.Attachment.ContentName | El nombre de los archivos adjuntos. |
Destination.Email.Attachment.ContentEncoding | La codificación de los archivos adjuntos: 7bit, base64 o quoted-printable.
|
Ubicación | Descripción |
---|---|
Root.EmailOutputHeader.To | Una lista de direcciones de correo electrónico separadas por comas. |
Root.EmailOutputHeader.Cc | Una lista de direcciones de correo electrónico separadas por comas. |
Root.EmailOutputHeader.Bcc | Una lista de direcciones de correo electrónico separadas por comas. |
Root.EmailOutputHeader.From | Una lista de direcciones de correo electrónico separadas por comas. |
Root.EmailOutputHeader.Reply-To | Una lista de direcciones de correo electrónico separadas por comas. |
Root.EmailOutputHeader.Subject | El asunto del correo electrónico. |