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.

C# enviar e-mail do Outlook

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.

Veja também