Criando e gerenciando e‑mails
Criando uma nova mensagem de e‑mail
O MailMessage classe representa uma mensagem de e‑mail e permite que desenvolvedores criem novas mensagens de e‑mail. Propriedades básicas como From, To, Subject e body podem ser facilmente associadas à mensagem recém‑criada. Da mesma forma, podemos salvar a mensagem em diferentes formatos como EML, MSG e MHTML.
- Crie uma instância do MailMessage classe.
- Defina as propriedades da mensagem de e‑mail.
- Salve a mensagem de e‑mail em diferentes formatos.
O trecho de código a seguir mostra como criar um novo e‑mail com diferentes propriedades.
Especificando Múltiplos Destinatários
O MailMessage objeto representa uma mensagem de e‑mail. Instâncias da MailMessage classe são usadas para construir mensagens de e‑mail que são transmitidas a um servidor SMTP usando o SmtpClient classe. Este artigo demonstra como especificar mais de um endereço de e‑mail. Endereços de e‑mail podem ser especificados usando o MailMessage classe. Eles são:
- To - 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.
- 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 do MailMessage classe.
- Especifique os endereços From e múltiplos To, Cc e Bcc usando o
MailMessageinstância. - Crie uma instância do SmtpClient classe 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.
Definindo nomes de exibição do remetente e destinatário
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 do MailMessage classe e especifique os endereços de e‑mail nos campos To e From juntamente com nomes amigáveis.
- Especifique os endereços de e‑mail Cc e Bcc juntamente com nomes amigáveis chamando o MailMessage construtor da classe no
MailMessageinstância. - Crie uma instância do SmtpClient classe e envie o e‑mail usando o Enviar método.
O trecho de código a seguir mostra como exibir Nomes para endereços de email.
Definindo o assunto de um e‑mail
O MailMessage classe permite especificar um resumo conciso do conteúdo da mensagem usando o assunto propriedade. O exemplo de código a seguir demonstra como criar um e‑mail e definir seu assunto:
from aspose.email import MailMessage
# Create a new email message
message = MailMessage()
# Set the subject of the email
message.subject = "Meeting Reminder: Project Update"
# Set other email properties (optional)
message.from_address = "sender@example.com"
message.to.append("recipient@example.com")
message.body = "This is a reminder for the upcoming project update meeting."
# Print the email details
print(f"Subject: {message.subject}")
print(f"From: {message.from_address}")
print(f"To: {', '.join(message.to)}")
print(f"Body: {message.body}")
Definindo o corpo do e‑mail
Além do assunto da mensagem, o corpo do e‑mail pode ser especificado usando o mesmo MailMessage classe. Um e‑mail pode ter múltiplos corpos. Existem dois tipos de corpos de e‑mail na classe:
- Corpo HTML
- Corpo de texto
Além de HtmlBody e TextBody, Aspose.Email tem outras duas propriedades somente leitura relacionadas ao corpo do e‑mail:
IsBodyText: informa ao usuário se o corpo é texto.IsBodyHtml: indica ao usuário se o corpo é HTML ou texto simples.
Este artigo mostra como definir texto simples ou HTML no corpo, definir texto alternativo e codificar o corpo do e‑mail.
Definindo o Corpo HTML
O corpo Html é usado para especificar o conteúdo HTML do corpo da mensagem. O corpo Html 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 e‑mail em diferentes formatos. Por exemplo, se você enviar uma mensagem em HTML, pode também querer fornecer uma versão em texto simples caso alguns destinatários usem leitores de e‑mail que não conseguem exibir conteúdo HTML. Esta classe tem duas propriedades, linked_resources e base_uri, que são usados para resolver URLs dentro do conteúdo do email.
- LinkedResources é uma coleção de objetos LinkedResources. Quando renderizado, URLs dentro do conteúdo do e‑mail são primeiro comparadas com as URLs no Content Link de cada objeto LinkedResources na coleção LinkedResources, e resolvidas.
- 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.
Recursos do MailMessage
O MailMessage classe representa o conteúdo de uma mensagem de e‑mail. Instâncias da MailMessage classe são usadas para construir uma mensagem de e‑mail que é transmitida a um servidor SMTP para entrega usando o SmtpClient classe. Este artigo mostra como usar MailMessage funcionalidades utilitárias da classe para controlar os seguintes recursos de e‑mail:
- Date and time - Através do MailMessage propriedade Date da classe que permite obter ou definir a data e hora de um e‑mail.
- 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 a hora é o horário em que foi enviada, conforme exibido pelo Microsoft Outlook. No entanto, o horário real de entrega do e‑mail é adicionado pelo próprio servidor SMTP no cabeçalho da mensagem. Por exemplo, abaixo está um cabeçalho de e‑mail comum, onde Date define o campo Date.
import aspose.email as ae
from aspose.email import MailMessage
# Create a new MailMessage instance
message = MailMessage()
# Add SMTP headers to the message
message.headers.add("Received", "from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700")
message.headers.add("Return-Path", "<xyz@oikoscucine.it>")
message.headers.add("Received", "from 195.120.225.20 (HELO mail.oikoscucine.it) by aspose.com with esmtp (:1CYY+<LA*- *1WK@) id Q8,/O/-.N83@7-9M for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300")
# Set email details
message.from_address = "XYZ <xyz@oikoscucine.it>"
message.to.append("abc@aspose.com")
message.subject = "For ABC"
message.date = "Thu, 22 Feb 2007 20:58:51 +0300"
message.message_id = "<01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>"
message.headers.add("MIME-Version", "1.0")
message.headers.add("Content-Type", "multipart/alternative; boundary=\"----=_NextPart_000_0006_01C7569A.58DF4CD0\"")
message.headers.add("X-Mailer", "Microsoft Office Outlook, Build 11.0.5510")
message.headers.add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2800.1106")
message.headers.add("Thread-Index", "Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==")
message.headers.add("X-Read", "1")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
O trecho de código abaixo ilustra como cada recurso discutido acima pode ser usado.
import aspose.email as ae
from aspose.email import MailMessage, MailPriority, MailSensitivity
from datetime import datetime
# Create a new MailMessage instance
message = MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
# Set additional properties
message.date = datetime.now()
message.priority = MailPriority.HIGH
message.sensitivity = MailSensitivity.NORMAL
message.headers.add("X-Mailer", "Aspose.Email")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
Solicitando um Recibo de Leitura
Os exemplos de programação abaixo mostram como você pode solicitar um recibo de leitura. O MailMessage classe DeliveryNotificationOptions A propriedade de enumeração descreve as 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 do MailMessage classe.
- Especifique o remetente, o receptor e o corpo HTML para o e‑mail no MailMessage instância.
- Especifique o DeliveryNotificationOptions em outro MailMessage instâncias.
- Crie uma instância do SmtpClient classe e envie o e‑mail 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.
import aspose.email as ae
from aspose.email import MailMessage, SmtpClient, DeliveryNotificationOptions
# Create an instance of MailMessage class
message = MailMessage()
# Specify From, To, HtmlBody, and DeliveryNotificationOptions
message.from_address = "sender@sender.com"
message.to.append("receiver@receiver.com")
message.html_body = "<html><body>This is the Html body</body></html>"
message.delivery_notification_options = DeliveryNotificationOptions.ON_SUCCESS
message.headers.add("Return-Receipt-To", "sender@sender.com")
message.headers.add("Disposition-Notification-To", "sender@sender.com")
# Create an instance of SmtpClient class
client = SmtpClient()
# Specify your mailing host server, Username, Password, and Port
client.host = "smtp.server.com"
client.username = "Username"
client.password = "Password"
client.port = 25
try:
# Client.send will send this message
client.send(message)
# Display 'Message sent' only if the message is sent successfully
print("Message sent")
except Exception as ex:
import traceback
traceback.print_exc()
Definir Cabeçalhos de E‑mail
Os cabeçalhos de e‑mail representam um padrão da Internet e o RFC define campos de cabeçalho que são incluídos nas mensagens de e‑mail da Internet. Um cabeçalho de e‑mail pode ser especificado usando a classe MailMessage. Tipos comuns de cabeçalhos são definidos na classe HeaderType. É uma classe selada que funciona como uma enumeração normal.
Normalmente, um cabeçalho de e‑mail contém estes campos:
- To: Endereços dos destinatários podem ser especificados no campo To. Esses destinatários 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 que os usuários enviem uma mensagem como "Cópia Carbono" ou "Cópia de Cortesia". Ou seja, o receptor não precisa responder ou agir. Normalmente, pessoal de supervisão é notificado com CC.
- Bcc: Significa Blind Carbon Copy (cópia oculta), refere-se à prática de enviar uma mensagem a múltiplos destinatários de forma que o que eles recebem não contenha a lista completa de destinatários. Destina-se a notificação oculta.
- 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 tópico 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ções 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 para XMailer. O valor de XMailer do MS Outlook é Microsoft Office Outlook, Build 11.0.5510. É 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 MailMessage.
- Crie uma instância do MimeHeader classe e especifique o cabeçalho secreto.
- Adicione o cabeçalho secreto ao MailMessage instância.
O trecho de código a seguir mostra como definir cabeçalhos de e‑mail.
import aspose.email as ae
from aspose.email import MailMessage
from datetime import datetime
# Create an instance of MailMessage class
message = MailMessage()
# Specify email details
message.reply_to_list.append("reply@reply.com")
message.from_address = "sender@sender.com"
message.to.append("receiver1@receiver.com")
message.cc.append("receiver2@receiver.com")
message.bcc.append("receiver3@receiver.com")
message.subject = "test mail"
message.date = datetime(2006, 3, 6)
message.headers.add("X-Mailer", "Aspose.Email")
O trecho de código acima gera um cabeçalho de e‑mail no formato seguinte. Isso pode ser observado ao abrir o arquivo resultante "MsgHeaders.msg" no Microsoft Outlook e então visualizar as 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 de HeadersCollection classe 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 Adicionar método não será útil. Para conseguir isso, use o Insert método do 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.
O trecho de código a seguir mostra como inserir um cabeçalho em um local específico.
# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")
Adicionando Cabeçalhos Personalizados ao E‑mail
O exemplo de programação abaixo demonstra como especificar um cabeçalho personalizado em uma mensagem de e‑mail usando o MailMessage classe.
# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")
O trecho de código acima gera um cabeçalho de e‑mail no seguinte formato:
secret-header: mystery