É possível produzir um e-mail onde o servidor SMTP, a lista de destinatários, o assunto, o texto e múltiplos anexos são determinados no tempo de execução.
É possível criar um fluxo de mensagens que produza um email com vários anexos. Para configurar um nó EmailOutput para enviar um email com um único anexo, um assunto estático e um texto estático para uma lista estática de destinatários, consulte Enviando um E-mail com um Anexo.
As propriedades do nó que você configura ao enviar um e-mail podem ser opcionais e podem ser substituídas no tempo de execução por valores especificados no ambiente local, no cabeçalho de saída do e-mail (EmailOutputHeader) ou no corpo da mensagem. Para usar esse método, nós anteriores no fluxo de mensagens devem construir essas substituições. Quando um valor de texto não é especificado nas propriedades do nó para o corpo principal do e-mail, o corpo da mensagem que é transmitido para o nó EmailOutput é utilizado.
Os exemplos a seguir mostram como configurar as informações de destinatário, de emissor, de assunto, do servidor SMTP e do corpo da mensagem em ESQL (com um nó Compute) e Java™ (com um nó JavaCompute).
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();
-- Incluir informações do destinatário em EmailOutputHeader
SET OutputRoot.EmailOutputHeader.To = '<endereço de e-mail do destinatário>';
SET OutputRoot.EmailOutputHeader.Cc = '<endereço de e-mail do destinatário>';
SET OutputRoot.EmailOutputHeader.Bcc = '<endereço de e-mail do destinatário>';
-- Incluir informações do remetente em EmailOutputHeader
SET OutputRoot.EmailOutputHeader.From = '<endereço de e-mail do remetente>';
SET OutputRoot.EmailOutputHeader."Reply-To" = '<endereço de e-mail de resposta>';
-- Incluir assunto em EmailOutputHeader
SET OutputRoot.EmailOutputHeader.Subject = 'Substituído pelo nó de cálculo ESQL.';
-- Incluir informações do servidor SMTP no LocalEnvironment
SET OutputLocalEnvironment.Destination.Email.SMTPServer ='<smtp.server:port>';
-- Criar um novo corpo da mensagem, que será enviado como o texto principal do e-mail.
SET OutputRoot.BLOB.BLOB = CAST('Este é o novo texto para o corpo do e-mail.' 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");
// Criar uma nova montagem para propagar para fora deste nó, uma vez que desejamos atualizá-lo
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();
// Criar o analisador EmailOutputHeader. Este é o local onde incluímos as informações de destinatário, de remetente e de assunto.
MbElement root = outMessage.getRootElement();
MbElement SMTPOutput = root.createElementAsLastChild("EmailOutputHeader");
// Incluir informações do destinatário em EmailOutputHeader
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Para", "<endereço de e-mail do destinatário");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Cc", "<endereço de e-mail do destinatário");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Bcc", "<endereço de e-mail do destinatário");
// Incluir informações do remetente em EmailOutputHeader
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "De", "<endereço de e-mail do remetente>");
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Responder para", "<endereço de e-mail de resposta>");
// Incluir informações do assunto em EmailOutputHeader
SMTPOutput.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Assunto", "Substituído pelo nó de cálculo Java.");
// Criar Destination.Email. Este é o local onde incluímos informações do servidor SMTP
MbElement Destination = localEnv.createElementAsLastChild(MbElement.TYPE_NAME, "Destino", null);
MbElement destinationEmail = Destination.createElementAsLastChild(MbElement.TYPE_NAME, "E-mail", null);
destinationEmail.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "SMTPServer", "<smtp.server:port>");
// Configurar último filho da raiz (corpo da mensagem)
MbElement BLOB = root.createElementAsLastChild(MbBLOB.PARSER_NAME);
String text = "Este é o novo texto para o corpo do e-mail";
BLOB.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "BLOB", text.getBytes());
outMessage.finalizeMessage(MbMessage.FINALIZE_VALIDATE);
out.propagate(outAssembly); }
Ambiente local | Descrição |
---|---|
Destination.Email.SMTPServer | O Server:Port do servidor SMTP. A porta é opcional; se você não especificá-la, o valor padrão será 25. |
Destination.Email.SecurityIdentity | A identidade de segurança para a autenticação com o servidor SMTP, que pode ser o nome do par ID de usuário e senha que é definido utilizando o comando mqsisetdbparms, ou ela pode fazer referência a um recurso externo que tem um atributo securityIdentity que faz referência a um ID de usuário e senha que são definidos utilizando o comando mqsisetdbparms. Em ambos os casos, o valor é anexado depois da cadeia "smtp::". Por exemplo, se você utilizar o comando mqsisetdbparms para criar um ID de usuário e uma senha do smtp::myUseridPassword, securityIdentity especificada no nó, ou indiretamente em um recurso externo, será myUseridPassword. |
Destination.Email.BodyContentType | Identifica que o corpo da mensagem de e-mail contém HTML em vez de texto simples. É possível configurar esta propriedade como text/plain, text/html ou text/xml; text/plain é o valor padrão. |
Destination.Email.MultiPartContentType | O tipo de multiparte, incluindo relacionado, misto e alternativo. É possível configurar qualquer valor aqui. |
Destination.Email.Attachment.Content | O anexo real (BLOB/texto), ou uma expressão XPath
ou ESQL que faz referência a um elemento; por exemplo, um elemento na
árvore de mensagens ou LocalEnvironment. O valor do elemento referido é obtido
como o conteúdo do anexo.
|
Destination.Email.Attachment.ContentType | O tipo de anexo (também conhecido como Internet Media Type), incluindo text/plain, text/html e text/xml. É possível configurar qualquer valor aqui. |
Destination.Email.Attachment.ContentName | O nome do anexo. |
Destination.Email.Attachment.ContentEncoding | A codificação do anexo: 7bit, base64 ou quoted-printable.
|
Local | Descrição |
---|---|
Root.EmailOutputHeader.To | Uma lista de endereços de e-mail separados por vírgulas. |
Root.EmailOutputHeader.Cc | Uma lista de endereços de e-mail separados por vírgulas. |
Root.EmailOutputHeader.Bcc | Uma lista de endereços de e-mail separados por vírgulas. |
Root.EmailOutputHeader.From | Uma lista de endereços de e-mail separados por vírgulas. |
Root.EmailOutputHeader.Reply-To | Uma lista de endereços de e-mail separados por vírgulas. |
Root.EmailOutputHeader.Subject | O assunto do e-mail. |