Criando e Definindo o Conteúdo de Emails
Criar Nova Mensagem de Email
Aspose.Email para Java permite que desenvolvedores criem mensagens MIME (Multipurpose Internet Mail Extensions) do zero. A classe principal para este propósito na API Aspose.Email para Java é a MailMessage classe. Este tópico explica as etapas necessárias para criar mensagens de email nos formatos de arquivo EML, MSG e MTH usando Aspose.Email para Java.
Para criar uma mensagem de email do zero:
- Crie uma instância da classe MailMessage.
- Defina o assunto da mensagem usando o setSubject() método.
- Defina o corpo da mensagem usando o setHtmlBody() método.
- Defina o remetente do email usando o setFrom() método.
- Defina o destinatário no campo TO usando o getTo().add() método.
- Defina o destinatário no campo CC usando o getCC().add() método.
- Chame o Save() método para salvar o arquivo da mensagem em disco nos formatos MSG, EML e MHT.
Especificando Múltiplos Destinatários
O MailMessage representa uma mensagem de email. Instâncias da classe MailMessage são usadas para construir mensagens de email que são transmitidas a um servidor SMTP usando o SmtpClient classe. Este tópico demonstra como especificar mais de um endereço de email. Endereços de email podem ser especificados usando a classe MailMessage. Os endereços de email usados na classe MailMessage são:
- To - Endereços de destinatários podem ser especificados no campo ‘To’. Os destinatários do campo ‘To’ são o público principal da mensagem. Pode haver mais de um endereço de destinatário.
- Cc - CC significa "cópia carbono" ou "cópia de cortesia", e permite adicionar destinatários de email que precisam ver a mensagem, mas que não são necessariamente esperados para agir sobre ela. Gerentes, por exemplo, ou membros da sua equipe que precisam estar cientes de uma conversa. Com Aspose.Email, endereços CC podem ser especificados em seu código. Dessa forma, emails automáticos, ou todos os emails para um endereço específico, podem ser copiados para o pessoal relevante.
- Bcc - Bcc, cópia oculta, permite que você envie um email para um destinatário que fica oculto aos outros destinatários. Onde um CC aparece nas informações do email que os destinatários principais veem, um Bcc não aparece. Destina‑se a notificações ocultas.
Para especificar múltiplos endereços de email em uma mensagem, siga estas etapas:
- Crie uma instância da classe MailMessage.
- Especifique o remetente (From) e múltiplos endereços To, Cc e Bcc usando a instância MailMessage.
- Crie uma instância da classe SmtpClient e envie o email usando o método Send.
O exemplo de código abaixo mostra como múltiplos endereços To, CC e BCC podem ser especificados.
Alterando endereços de email para um nome amigável
Os exemplos de programação abaixo demonstram como mudar endereços de email para nomes amigáveis em uma mensagem de email. Um nome amigável é um nome mais legível que o endereço de email, por exemplo John Smith ao invés de js346@domain.com. Ao enviar um email, podemos associar um nome amigável a um endereço de email no MailMessage construtor da classe.
Para mudar endereços de email para nomes amigáveis em uma mensagem, siga estas etapas:
- Crie uma instância da classe MailMessage e especifique endereços de email nos campos To e From junto com nomes amigáveis.
- Especifique os endereços de email Cc e Bcc junto com nomes amigáveis chamando o construtor da classe MailMessage na instância MailMessage.
- Crie uma instância da classe SmtpClient e envie o email usando o método Send.
O trecho de código a seguir mostra como exibir Nomes para endereços de email.
Definir Corpo do Email
O MailMessage classe representa uma mensagem de email. Instâncias da classe MailMessage são usadas para construir mensagens de email que são transmitidas a um servidor SMTP para entrega usando o SmtpClient classe. Um corpo de email pode ser especificado usando a classe MailMessage. Um corpo de email pode ser especificado usando setHtmlBody método em MailMessage.
Além de HtmlBody, Aspose.Email tem outro método relacionado ao corpo do email:
- isBodyHtml: indica ao usuário se o corpo é HTML ou texto simples.
Este tópico mostra como definir o texto do corpo HTML e definir texto alternativo.
Definindo o Corpo HTML
HtmlBody é usado para especificar o conteúdo HTML de um corpo de mensagem. HtmlBody deve estar entre as tags . O trecho de código a seguir mostra como definir o corpo HTML.
Definindo Texto Alternativo
Use o AlternateView classe para especificar cópias de uma mensagem de email em diferentes formatos. Por exemplo, se você enviar uma mensagem em HTML, talvez também queira fornecer uma versão em texto simples caso alguns destinatários usem leitores de email que não podem exibir conteúdo HTML. Esta classe tem duas propriedades, LinkedResources e BaseUri, que são usados para resolver URLs dentro do conteúdo do email.
- LinkedResources é uma coleção de objetos LinkedResources. Quando renderizado, os URLs dentro do conteúdo do email são primeiro comparados com os URLs no Content Link de cada objeto LinkedResources na coleção LinkedResources, e resolvidos.
- BaseUri é usado pelo leitor de email para resolver URLs relativas dentro do corpo, e também para resolver URLs de Content Link relativos, na coleção LinkedResources.
O trecho de código a seguir mostra como definir texto alternativo.
Especificando a Codificação do Corpo do Email
O tipo de conteúdo define o formato do conteúdo do email: o conjunto de caracteres. Por exemplo, alguns conjuntos de caracteres comuns fornecidos em java.nio.Charset são:
- US-ASCII - ASCII de sete bits, também conhecido como ISO646-US, ou bloco Basic Latin do conjunto de caracteres Unicode
- ISO-8859-1 - Alfabeto Latino ISO nº 1, também conhecido como ISO-LATIN-1
- UTF-8 - Formato de Transformação UCS de oito bits
- UTF-16BE - Formato de Transformação UCS de dezesseis bits, ordem big-endian
- UTF-16LE - Formato de Transformação UCS de dezesseis bits, ordem little-endian
- UTF-16 - Formato de Transformação UCS de dezesseis bits, ordem de bytes identificada por uma marca de ordem de bytes opcional
Aspose.Email usa o BodyEncoding propriedade da classe MailMessage para especificar a codificação do corpo do email. Para codificar o corpo de uma mensagem de email, siga as etapas abaixo:
- Crie uma instância da classe MailMessage.
- Especifique o remetente, o destinatário e o corpo HTML do email na instância MailMessage.
- Especifique o valor da propriedade BodyEncoding.
- Crie uma instância do SmtpClient classe e envie o email usando o método Send.
Recursos do MailMessage
O MailMessage classe representa o conteúdo de uma mensagem de email. Instâncias da classe MailMessage são usadas para construir uma mensagem de email que é transmitida a um servidor SMTP para entrega usando o SmtpClient classe. Este artigo mostra como usar os recursos utilitários da classe MailMessage para controlar as seguintes funcionalidades de email:
- Data e hora - Através da classe MailMessage setDate método que usamos para definir a data e hora de um email.
- Prioridade da mensagem - A MailPriority classe especifica níveis de prioridade para o envio de uma mensagem de email. Pode ser baixa, normal ou alta. A prioridade influencia a velocidade de transmissão e a entrega.
- Sensibilidade da mensagem - A MailSensitivity classe especifica cinco níveis de sensibilidade.
- Notificação de entrega - Notificações de entrega permitem que os remetentes saibam que o email que enviaram foi entregue na caixa de entrada do destinatário.
Por padrão, a data é a data real em que a mensagem foi enviada, e o horário é o horário em que foi enviada, conforme exibido pelo Microsoft Outlook. No entanto, o horário real de entrega do email é adicionado pelo próprio servidor SMTP no cabeçalho do email. Por exemplo, abaixo está um cabeçalho de email comum, onde o campo Date foi definido usando MailMessage.setDate.
O trecho de código abaixo ilustra como cada recurso discutido acima pode ser usado.
Solicitando um Recibo de Leitura
Os exemplos de programação abaixo mostram como solicitar um recibo de leitura. A classe MailMessage DeliveryNotificationOptions Propriedade de enumeração descreve o opções de notificação de entrega para um e‑mail. Para solicitar um recibo de leitura após enviar um e‑mail, siga estas etapas:
- Crie uma instância da classe MailMessage.
- Especifique o remetente, o destinatário e o corpo HTML do email na instância MailMessage.
- Especifique o DeliveryNotificationOptions em outras instâncias de MailMessage.
- Crie uma instância da classe SmtpClient e envie o email usando o método Send.
Pedidos de confirmação de leitura podem não ser sempre atendidos porque:
- Um cliente de email pode não implementar essa funcionalidade.
- O usuário final pode ter essa funcionalidade desativada.
- O usuário final pode optar por não enviar uma.
O trecho de código a seguir mostra como solicitar uma confirmação de leitura.
Definir Cabeçalhos de E‑mail
Cabeçalhos de e‑mail representam um padrão da Internet e o RFC define campos de cabeçalho que são incluídos em mensagens de e‑mail da Internet. Um cabeçalho de e‑mail pode ser especificado usando o MailMessage classe. Os tipos de cabeçalho comuns são definidos em HeaderType classe. É uma classe selada que funciona como uma enumeração normal.
Normalmente, um cabeçalho de e‑mail contém estes campos:
- To: Os endereços dos destinatários podem ser especificados no campo To. Os destinatários do campo To são o público principal da mensagem. Pode haver mais de um endereço de destinatário.
- From: Este campo apresenta o endereço de e‑mail do remetente da mensagem.
- Cc: Permite aos usuários enviar uma mensagem como "Cópia Carbono" ou "Cópia de Cortesia". Ou seja, o receptor não precisa responder ou agir. Normalmente, o pessoal de supervisão é notificado com CC.
- Bcc: Significa Blind Carbon Copy (cópia oculta); refere-se à prática de enviar uma mensagem a vários destinatários de modo que o que eles recebem não contenha a lista completa de destinatários. Destina‑se a notificações ocultas.
- ReplyTo: Este campo de cabeçalho indica para onde o remetente deseja que as respostas sejam enviadas.
- Subject: Título, cabeçalho, assunto. Frequentemente usado como indicador de thread para mensagens que respondem ou comentam outras mensagens.
- Date: Este cabeçalho especifica uma data (e hora). Normalmente, é a data em que a mensagem foi composta e enviada.
- XMailer: Informação sobre o software cliente do remetente. Exemplo: X-Mailer: Aspose.Email XMailer é usado por clientes de e‑mail. Diferentes clientes de e‑mail terão valores diferentes de XMailer. O valor XMailer do MS Outlook é Microsoft Office Outlook, Build 11.0.5510. Ele é ignorado pelo receptor ou leitor de e‑mail.
Normalmente, um cabeçalho de e‑mail tem a seguinte aparência:
Reply-To: reply@reply.com
From: sender@sender.com
To: guangzhou@guangzhoo.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email
Para personalizar um cabeçalho de e‑mail, siga estas etapas:
- Crie uma instância do MailMessage classe.
- Especifique To, From, CC, Bcc, ReplyTo, Subject, Date e XMailer usando uma instância da classe MailMessage.
- Crie uma instância do MimeHeader classe e especifique o cabeçalho secreto.
- Adicione o cabeçalho secreto à instância MailMessage.
No código abaixo, personalizamos um cabeçalho de e‑mail.
O trecho de código acima produz um cabeçalho de e‑mail no seguinte formato. Isso pode ser observado abrindo o arquivo MsgHeaders.msg no Microsoft Outlook e, em seguida, visualizando suas propriedades.
Reply-To: reply@reply.com
From: sender@sender.com
To: receiver1@receiver.com
CC: receiver2@receiver.com
BCC: receiver3@receiver.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email
secret-header: mystery
Inserir Cabeçalho em Local Específico
O Adicionar método da HeadersCollection insere o cabeçalho no final da coleção. Contudo, às vezes pode ser necessário inserir um cabeçalho em um local específico. Nesse caso, o método Add não ajudará. Para conseguir isso, use o Insert método da HeadersCollection. Se a coleção contém cabeçalhos com o mesmo nome, este cabeçalho será inserido antes de outros cabeçalhos com o mesmo nome. A seguir está a assinatura do método Insert e um código de exemplo para uso.
Method Signature
HeaderCollection.insert(String name, String value)
Adicionando Cabeçalhos Personalizados ao E‑mail
Os exemplos de programação abaixo demonstram como especificar um cabeçalho personalizado em uma mensagem de e‑mail. Um cabeçalho de e‑mail pode ser especificado usando a classe MailMessage. Para especificar um cabeçalho personalizado em uma mensagem de e‑mail, siga estas etapas:
- Crie uma instância da classe MailMessage.
- Especifique os valores de to, from e subject usando a instância MailMessage.
- Adicione o cabeçalho secreto à instância MailMessage.
- Crie uma instância da classe SmtpClient e envie o email usando o método Send.
O trecho de código a seguir mostra como adicionar cabeçalhos personalizados ao e‑mail.
Assinar E‑mails com DKIM
Aspose.Email permite assinar e‑mail com DKIM (DomainKeys Identified Mail). Isso permite que uma organização assuma a responsabilidade por uma mensagem em trânsito (sobre DKIM): DKIM adiciona uma assinatura digital aos cabeçalhos da mensagem de e‑mail que pode ser validada pelos destinatários. A chave pública do remetente permite ao receptor verificar se a assinatura corresponde ao conteúdo da mensagem. A classe MailMessage dKIMSign método é usado para definir as informações criptográficas e de assinatura para assinar a mensagem. O trecho de código a seguir mostra como assinar e‑mails com DKIM.
Realizando Mail Merge
Mail merges ajudam a criar e enviar um lote de mensagens de e‑mail semelhantes. O núcleo dos e‑mails é o mesmo, mas o conteúdo pode ser personalizado. Normalmente, os detalhes de contato do destinatário (primeiro nome, sobrenome, empresa etc.) são usados para personalizar o e‑mail.
|
| | :- | |Figura: Ilustração de como funciona um mail merge|
Para executar um mail merge com Aspose.Email, siga os passos a seguir:
- Criar uma função com assinatura de nome
- Crie uma instância do MailMessage classe.
- Especifique o remetente, receptor, assunto e corpo.
- Crie uma assinatura para o final do e‑mail.
- Crie uma instância do TemplateRoutine classe e passe-a para o MailMessage instância.
- Obtenha assinatura no TemplateRoutine instância.
- Crie uma instância do DataTable classe.
- Adicione as colunas Receipt, FirstName e LastName como fontes de dados na classe DataTable
- Crie uma instância do DataRow classe
- Especifique o endereço de recibo, nome e sobrenome no objeto DataRow
- Crie uma instância do MailMessageCollection classe
- Especifique o TemplateRoutine e instâncias DataTable no MailMessageCollection instância.
- Crie uma instância do SmtpClient classe e especifique o servidor, porta, nome de usuário e senha
- Enviar e‑mails usando o SmtpClient classe BulkSendAsync method
O código abaixo envia um e‑mail para uma pessoa a partir de três outras.