WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Produzindo Mensagens de E-mail Dinâmicas

É 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).

Usando um Nó Compute

O Diagrama Mostra um Fluxo de Mensagens que Usa um Nó MQInput, Nó Compute e nó EmailOutput para Produzir um E-mail Dinâmico.
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;
Para gravar caracteres de espaço em branco (como nova linha (NL), retorno de linha (CR) e caracteres de feed de linha (LF)) na sequência de texto que é produzida como o corpo do email, você pode incluir as seguintes linhas de código.
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);

Utilizando um nó JavaCompute

O diagrama mostra um fluxo de mensagens que utiliza um nó MQInput, um nó JavaCompute e um nó EmailOutput para produzir um e-mail dinâmico.
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); 	}

Usando o Ambiente Local

Use o ambiente local para especificar substituições nas informações de conexão do servidor SMTP e anexos.
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.
  • Se o elemento for um BLOB, ele será um anexo.
  • Se o elemento for texto, verifique se ele pode ser resolvido para outro elemento na árvore de mensagens ou LocalEnvironment. Se puder ser resolvido, utilize esse elemento. Se não puder ser resolvido, inclua este elemento como o 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.
  • 7bit é o valor padrão utilizado para texto ASCII.
  • Base64 é utilizado para não-ASCII, se dados não em inglês ou binários. Este formato pode ser difícil de ser lido.
  • Quoted-printable é uma alternativa para Base64 e é apropriado quando a maioria dos dados é ASCII com algumas partes não ASCII. Este formato é mais legível; ele fornece uma codificação mais compacta, porque as partes ASCII não são codificadas.

Utilizando o Cabeçalho de Saída de E-mail

Use o cabeçalho de saída de e-mail para especificar substituições para as informações de conexão e anexos do servidor SMTP. O EmailOutputHeader é um filho de Root. Os valores especificados neste cabeçalho substituem as propriedades equivalentes configuradas no nó EmailOutput. Utilize o cabeçalho de saída SMTP para especificar quaisquer atributos de e-mail, como seus destinatários.
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.
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:53


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ac66340_