Enviar E‑mails & Encaminhar Mensagens via SMTP
O SmtpClient classe em Aspose.Email para Python via .NET fornece uma interface robusta e flexível para enviar e‑mails usando o Simple Mail Transfer Protocol (SMTP). É o ponto de entrada principal para desenvolvedores que desejam entregar mensagens de e‑mail dentro de suas aplicações.
Principais recursos do SmtpClient incluir classe:
-
Entrega de E‑mail via SMTP: Permite enviar e‑mails diretamente através de um servidor SMTP.
-
Opções Alternativas de Entrega: Suporta métodos de entrega adicionais, como salvar mensagens no sistema de arquivos ou gravar em uma fila de mensagens.
-
Operações Síncronas e Assíncronas:
-
Modo Síncrono: Use os métodos Send para bloquear a thread atual até que o e‑mail seja totalmente transmitido.
-
Modo Assíncrono: Use os métodos SendAsync para enviar mensagens em segundo plano, permitindo que a aplicação permaneça responsiva.
-
-
Suporte a TNEF: Permite enviar mensagens no formato Transport Neutral Encapsulation Format (TNEF) para compatibilidade com recursos do Microsoft Outlook.
Este artigo cobre todas as principais funcionalidades disponíveis através da SmtpClient classe, demonstrando como enviar mensagens de e‑mail padrão e avançadas com controle total sobre configuração e entrega.
Enviar E‑mails Síncronamente
O SmtpClient.send método permite enviar uma mensagem de e‑mail de forma síncrona. Essa abordagem é útil quando a aplicação precisa confirmar a entrega antes de continuar.
Para enviar um e‑mail de texto simples de forma síncrona usando Aspose.Email for Python via .NET, siga os passos e use o exemplo de código abaixo:
- Crie um MailMessage instância e defina o remetente, destinatário(s), assunto e corpo.
- Configure o SmtpClient com o host do servidor, porta, nome de usuário e senha.
- Chame o
sendmétodo no SmtpClient instância e passe o MailMessage objeto.
# Create email
eml = ae.MailMessage()
eml.subject = "Message with Plain Text Body"
eml.body = "This is text body."
eml.from_address = "from@gmail.com"
eml.to.append(ae.MailAddress("to@gmail.com", "Recipient 1"))
# Configure SmtpClient object
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO
# Send email
client.send(eml)
Enviar um Arquivo EML Pré‑composto via SMTP
Se precisar enviar uma mensagem de e‑mail que já foi composta e salva no formato EML, você pode carregá‑la e enviá‑la programaticamente usando Aspose.Email para Python via .NET.
O trecho de código a seguir com etapas demonstra como enviar um arquivo EML usando SmtpClient:
- Carregue o arquivo EML usando o MailMessage.load método.
- Crie e configure uma instância de SmtpClient, fornecendo o host do servidor SMTP, nome de usuário e senha para autenticação.
- Chame o
sendmétodo no SmtpClient instância e passe a mensagem carregada.
import aspose.email as ae
message = ae.MailMessage.load("test.eml")
# Send this message using SmtpClient
client = ae.clients.SmtpClient("host", "username", "password")
client.send(message)
Enviar um E‑mail em Texto Simples
Você pode enviar um e‑mail em texto simples usando Aspose.Email especificando o corpo da mensagem como texto simples. O MailMessage.body propriedade é usada para definir o conteúdo, enquanto o SmtpClient classe lida com o processo de envio.
O trecho de código a seguir com etapas demonstra como enviar um e‑mail em texto simples:
- Crie uma instância do MailMessage classe.
- Defina os endereços de e‑mail do remetente e do destinatário.
- Atribua o conteúdo em texto simples à propriedade body.
- Crie uma instância do SmtpClient classe com os detalhes do servidor e credenciais.
- Enviar o e‑mail usando o
sendmétodo.
Enviar E‑mail HTML
Aspose.Email para Python via .NET permite enviar e‑mails com corpos formatados em HTML usando o MailMessage classe. Ao atribuir conteúdo HTML ao html_body propriedade e ajuste is_body_html para True, você pode criar mensagens ricas e estilizadas.
O exemplo de código a seguir com etapas demonstra como enviar um e‑mail HTML:
- Crie uma instância do MailMessage classe.
- Defina os endereços de e‑mail do remetente e do destinatário.
- Definir
is_body_html = Truepara indicar formatação HTML. - Atribua seu conteúdo HTML ao
html_bodypropriedade. - Crie e configure o SmtpClient instância.
- Use o
sendmétodo para transmitir a mensagem.
Observação: Embora este exemplo use HTML básico, você pode incorporar estruturas HTML mais complexas para criar layouts de e‑mail responsivos e com identidade visual.
Enviar E‑mail HTML com Alternativa em Texto Simples
Ao enviar e‑mails HTML, a prática recomendada é incluir uma versão em texto simples para destinatários cujos clientes de e‑mail não suportam HTML. Aspose.Email para Python via .NET oferece o AlternateView classe para incluir conteúdo HTML e texto simples em uma única mensagem, aprimorando a compatibilidade e a experiência do usuário.
O exemplo de código a seguir e as etapas demonstram como enviar um e‑mail com conteúdo de texto alternativo:
- Crie uma instância do MailMessage classe.
- Defina os endereços de e‑mail do remetente e do destinatário.
- Atribua conteúdo HTML ao
html_bodypropriedade e definais_body_html = True. - Crie um AlternateView em texto simples usando create_alternate_view_from_string.
- Adicione a visualização alternativa ao
alternate_viewscoleção dos MailMessage. - Crie e configure o SmtpClient instância.
- Enviar o e‑mail usando o
sendmétodo.
Como Enviar E‑mails em Massa
Enviar e‑mails em massa envolve despachar várias mensagens de uma vez — cada uma potencialmente endereçada a um destinatário diferente. Aspose.Email fornece essa capacidade usando o SmtpClient classe.
O exemplo de código abaixo demonstra como enviar um lote de e‑mails de uma só vez:
- Crie uma instância do SmtpClient classe e configure seu host, porta, credenciais e configurações de segurança.
- Crie múltiplos MailMessage instâncias — cada uma representando uma mensagem de e‑mail individual.
- Especifique remetente, destinatário, assunto e corpo da mensagem para cada e‑mail.
- Adicione todos MailMessage objetos para um MailMessageCollection.
- Chame o
sendmétodo do SmtpClient classe, passando o MailMessageCollection como argumento.
import aspose.email as ae
from aspose.email.clients import SmtpClient, SecurityOptions
from aspose.email import MailMessage, MailMessageCollection
# Create individual email messages
message1 = MailMessage("from@gmail.com", "to1@gmail.com", "Bulk Email - Message 1", "Hello, this is message 1.")
message2 = MailMessage("from@gmail.com", "to2@gmail.com", "Bulk Email - Message 2", "Hello, this is message 2.")
message3 = MailMessage("from@gmail.com", "to3@gmail.com", "Bulk Email - Message 3", "Hello, this is message 3.")
# Add messages to a collection
many_messages = MailMessageCollection()
many_messages.append(message1)
many_messages.append(message2)
many_messages.append(message3)
# Configure SMTP client
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO
# Send all messages in bulk
client.send(many_messages)
Enviar E‑mails com Suporte a Multi‑conexão
Aspose.Email para Python via .NET permite usar múltiplas conexões simultâneas ao enviar e‑mails através do SmtpClient classe. Esse recurso pode ajudar a otimizar o desempenho ao enviar grandes volumes de e‑mail distribuindo a carga de trabalho entre várias conexões. No entanto, tenha em mente que habilitar o modo multi‑conexão não garante um aumento de desempenho em todos os cenários — depende da configuração do servidor e das condições de rede.
Propriedades‑chave:
-
use_multi_connection: Habilita ou desabilita o modo multi‑conexão para o cliente SMTP. -
connections_quantity: Especifica o número de conexões a serem abertas quando o modo multi‑conexão está habilitado.
O exemplo de código a seguir mostra como habilitar o modo multi‑conexão:
- Crie e configure uma instância de SmtpClient.
- Defina detalhes do servidor como host, porta, nome de usuário, senha e criptografia.
- Habilite o modo multi‑conexão definindo
use_multi_connection. - Especifique o número de conexões com
connections_quantity.
import aspose.email as ae
client = ae.clients.smtp.SmtpClient
client.host = "<HOST>"
client.username = "<USERNAME>"
client.password = "<PASSWORD>"
client.port = 587
client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
client.send(messages)
Enviar E‑mails Formatados em TNEF
Transport Neutral Encapsulation Format (TNEF) é um formato de e‑mail proprietário usado pelo Microsoft Outlook e Exchange para preservar formatação rica, objetos incorporados e recursos especiais como botões de votação. Clientes de e‑mail padrão podem não manter essa formatação ao usar mensagens típicas baseadas em MIME.
Aspose.Email para Python via .NET suporta o envio de e‑mails no formato TNEF para garantir que toda formatação avançada e recursos sejam preservados. Isso é conseguido habilitando o use_tnef propriedade do SmtpClient classe.
O exemplo de código a seguir e as etapas demonstram como enviar um e‑mail TNEF:
- Carregue uma mensagem EML existente ou crie uma usando o MailMessage classe.
- Defina os endereços do remetente e do destinatário.
- Habilite a formatação TNEF definindo
use_tnef = Trueno SmtpClient instância. - Envie a mensagem usando o
send()método.
Enviar Solicitações de Reunião por E‑mail
Microsoft Outlook e outros clientes de e‑mail com suporte a calendário, como IBM Lotus Notes, permitem que os usuários gerenciem compromissos diretamente da caixa de entrada. Quando um usuário recebe um convite de reunião, ele pode aceitar ou recusar diretamente no cliente de e‑mail. Com Aspose.Email para Python via .NET, desenvolvedores podem criar e enviar programaticamente esses convites de reunião em conformidade com o padrão iCalendar (RFC 2445).
Como Enviar Convites de Reunião por E‑mail
Aspose.Email oferece suporte nativo para compor e enviar solicitações de reunião iCalendar como parte de um e‑mail. Essas solicitações são compatíveis com clientes de calendário populares e permitem que os destinatários respondam a convites facilmente.
|Solicitação de reunião iCalendar enviada por e‑mail| | :- | |
|
O trecho de código a seguir mostra como enviar solicitações por e‑mail:
- Crie um MailMessage instância.
- Especifique os endereços de e‑mail do remetente e do destinatário.
- Crie um Appointment objeto com localização, horários de início/fim, remetente e destinatários.
- Defina o resumo e a descrição do compromisso.
- Anexe o compromisso ao e‑mail usando
add_alternate_view(). - Enviar o e‑mail usando o SmtpClient.
Suporte a iCalendar para IBM Lotus Notes
Aspose.Email usa o formato iCalendar (RFC 2445), que garante que suas solicitações de reunião sejam compatíveis com Microsoft Outlook, IBM Lotus Notes e qualquer outro cliente que suporte o padrão. O mesmo processo pode ser usado independentemente da plataforma do destinatário.
Encaminhar E‑mails usando o Cliente SMTP
Encaminhar e‑mails é uma tarefa comum na comunicação digital, frequentemente usada para compartilhar mensagens recebidas com outros. Aspose.Email para Python via .NET permite que desenvolvedores encaminhem e‑mails programaticamente usando o SmtpClient classe. O método forward permite encaminhar mensagens de e‑mail salvas ou recebidas para novos destinatários sem envolver o remetente original.
Abaixo está um exemplo de código que demonstra como encaminhar um e‑mail usando o MailMessage classe:
Encaminhar Arquivos EML Sem Carregá‑los no MailMessage
Aspose.Email também suporta encaminhar arquivos .eml diretamente sem primeiro carregá‑los em um MailMessage objeto. Isso é particularmente útil em cenários onde o uso de memória do sistema precisa ser minimizado.
O exemplo de código abaixo demonstra como encaminhar um arquivo EML diretamente:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient(host, smtp_port, username, password, ae.clients.SecurityOptions.AUTO)
file = open("test.eml", "rb")
client.forward(sender, recipients, file)