Neste blog, você aprenderá como criar mensagens de email do Outlook (incluindo MSG, EML, EMLX ou MHTML) e enviar emails de forma síncrona ou assíncrona usando C# em .NET ou .NET Core.
O e-mail tornou-se a principal fonte de troca de mensagens e compartilhamento de conteúdo, como documentos, imagens ou outros tipos de arquivos. A frequência de uso de e-mails está mais dentro dos sistemas online para compartilhamento de notificações ou documentos importantes com várias entidades. Nesses casos, preparar um modelo e enviar e-mails para várias partes interessadas manualmente pode ser uma tarefa demorada e agitada.
Aí vem a necessidade de um serviço de automação de e-mail usando o qual você pode criar e enviar e-mails sem problemas. Portanto, neste artigo, vou ensiná-lo a criar mensagens de e-mail de formatos populares do Outlook e automatizar o processo de envio de e-mails de forma programática. Depois de ler este artigo, você será capaz de:
- criar e salvar uma mensagem de email em C#,
- crie um email com corpo HTML em C#,
- crie um email com uma codificação específica em C#,
- enviar emails de forma síncrona usando SMTP em C#,
- enviar emails de forma assíncrona usando SMTP em C#,
- e enviar emails em massa em C#.
API C# para criar e enviar emails do Outlook
Para automatizar o processo de criação e envio de mensagens de e-mail, usaremos o Aspose.Email for .NET que é uma poderosa API de manipulação e processamento de e-mail. Ele suporta formatos de e-mail populares, incluindo mensagens do MS Outlook, como MSG, EML/EMLX, etc. Você pode baixar diretamente a API DLL ou instalá-la via NuGet Package Manager ou Package Manager Console no Visual Studio .
PM> Install-Package Aspose.Email
Depois de criar um aplicativo C# (Console, ASP.NET, etc.) e instalar o Aspose.Email para .NET, você pode começar a criar e enviar os emails em C#.
Criar um e-mail do Outlook em C#
Para criar ou manipular mensagens de e-mail do Outlook, o Aspose.Email fornece a classe MailMessage. Esta classe permite definir todas as propriedades de uma mensagem de e-mail (Assunto, Para, De e Corpo), adicionar anexos e salvar a mensagem em diferentes formatos de e-mail, como EML, MSG, MHTML, etc. A seguir estão as etapas para criar uma mensagem de e-mail:
- Crie uma instância da classe MailMessage.
- Defina as propriedades da mensagem.
- Salve a mensagem de e-mail usando o método MailMessage.Save().
O exemplo de código a seguir mostra como criar e salvar uma mensagem de email em C#.
// Crie uma nova instância da classe MailMessage
MailMessage message = new MailMessage();
// Definir assunto da mensagem, corpo e informações do remetente
message.Subject = "New message created by Aspose.Email for .NET";
message.Body = "This is the body of the email.";
message.From = new MailAddress("from@domain.com", "Sender Name", false);
// Adicionar a destinatários e destinatários CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));
// Adicionar Anexos
message.Attachments.Add(new Attachment("word.docx"));
// Salvar mensagem nos formatos EML, EMLX, MSG e MHTML
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);
message.Save("EmailMessage.emlx", SaveOptions.CreateSaveOptions(MailMessageSaveType.EmlxFormat));
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);
message.Save("EmailMessage.mhtml", SaveOptions.DefaultMhtml);
Criar um email do Outlook com corpo HTML em C#
As tags HTML são usadas para deixar o corpo do e-mail mais estruturado, apresentável e enriquecido com diferentes elementos como tabelas, imagens, listas, etc. Caso você queira criar um email com corpo HTML, você pode usar a propriedade MailMessage.HtmlBody. O exemplo de código a seguir mostra como criar um email do Outlook com corpo HTML em C#.
// Crie uma nova instância da classe MailMessage
MailMessage message = new MailMessage();
// Definir assunto da mensagem, corpo HTML e informações do remetente
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);
// Adicionar a destinatários e destinatários CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));
// Salvar mensagem no formato EML/EMLX/MSG/MHTML
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);
Crie um email do Outlook com uma codificação específica em C#
Você também pode especificar o padrão de codificação desejado para informar ao navegador ou aplicativo de e-mail sobre como interpretar os caracteres no corpo do e-mail. A propriedade MailMessage.BodyEncoding é usada para essa finalidade. O exemplo de código a seguir mostra como definir a codificação do corpo ao criar um email do Outlook usando C#.
// Crie uma nova instância da classe MailMessage
MailMessage message = new MailMessage();
// Definir assunto da mensagem, corpo HTML, informações do remetente e do destinatário
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
// Especificar codificação
message.BodyEncoding = Encoding.ASCII;
// Salvar mensagem no formato EML/EMLX/MSG/MHTML
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);
Enviar emails do Outlook de forma síncrona ou assíncrona em C#
Agora, depois de criar a mensagem de e-mail, você pode enviá-la para seus destinatários de forma síncrona ou assíncrona. A classe SmtpClient permite enviar as mensagens de e-mail do Outlook usando SMTP (Simple Mail Transfer Protocol). A seguir estão as etapas para enviar um email em C# usando Aspose.Email para .NET.
- Crie ou carregue uma mensagem de email usando a classe MailMessage.
- Crie uma instância da classe SmtpClient e defina o host, o nome de usuário, a senha e o número da porta.
- Envie e-mail de forma síncrona ou assíncrona usando o método SmtpClient.Send ou SmtpClient.SendAsync, respectivamente.
Enviar um e-mail do Outlook de forma síncrona em C#
// Crie a instância MailMessage. Você pode criar uma nova mensagem ou carregar um arquivo de mensagem já criado (eml, msg, etc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");
// Crie uma instância da classe SmtpClient
SmtpClient client = new SmtpClient();
// Especifique seu host de correspondência, nome de usuário, senha, número da porta e opção de segurança
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
try
{
// Envie este e-mail
client.Send(msg);
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
Enviar um email do Outlook de forma assíncrona em C#
// Crie a instância MailMessage. Você pode criar uma nova mensagem ou carregar um arquivo de mensagem já criado (eml, msg, etc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");
// Crie uma instância da classe SmtpClient
SmtpClient client = new SmtpClient();
// Especifique seu host de correspondência, nome de usuário, senha, número da porta e opção de segurança
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
// Especifique seu host de correspondência, nome de usuário, senha, número da porta e opção de segurança
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
// Enviar mensagens
client.SendAsync(msg);
Console.WriteLine("Sending message...");
msg.Dispose();
Enviar e-mails em massa em C#
Você também pode criar e enviar e-mails em massa. A classe MailMessageCollection é usada para conter a coleção de mensagens de email que você deseja enviar. O exemplo de código a seguir mostra como enviar emails em massa em C#.
// Crie SmtpClient e especifique servidor, porta, nome de usuário e senha
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");
// Crie instâncias da classe MailMessage e especifique To, From, Subject e Message
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");
// Crie uma instância de MailMessageCollection e adicione mensagens de email a ela
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);
try
{
// Enviar mensagens
client.Send(manyMsg);
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
Demonstrações ao vivo
Conclusão
Neste artigo, você aprendeu como criar emails do Outlook em C#. Além disso, você viu como enviar e-mails de forma síncrona ou assíncrona de dentro de aplicativos .NET. Você pode explorar a documentação do Aspose.Email para .NET para saber mais sobre a API.