En este blog, aprenderá a crear mensajes de correo electrónico de Outlook (incluidos MSG, EML, EMLX o MHTML) y a enviar correos electrónicos de forma sincrónica o asincrónica mediante C# en .NET o .NET Core.

C# enviar correo electrónico de perspectiva

El correo electrónico se ha convertido en una fuente principal para intercambiar mensajes y compartir contenido, como documentos, imágenes u otros tipos de archivos. La frecuencia de uso de correos electrónicos está más dentro de los sistemas en línea para compartir notificaciones o documentos importantes con múltiples entidades. En tales casos, preparar una plantilla y enviar correos electrónicos a múltiples partes interesadas manualmente podría ser una tarea agitada y que requiere mucho tiempo.

Aquí surge la necesidad de un servicio de automatización de correo electrónico con el que pueda crear y enviar correos electrónicos sin problemas. Entonces, en este artículo, le enseñaré cómo crear mensajes de correo electrónico de formatos populares de Outlook y automatizar el proceso de envío de correos electrónicos mediante programación. Después de leer este artículo, podrá:

  • crear y guardar un mensaje de correo electrónico en C#,
  • crear un correo electrónico con cuerpo HTML en C#,
  • crear un correo electrónico con una codificación particular en C#,
  • enviar correos electrónicos sincrónicamente usando SMTP en C#,
  • enviar correos electrónicos de forma asíncrona usando SMTP en C#,
  • y enviar correos electrónicos masivos en C#.

API de C# para crear y enviar correos electrónicos de Outlook

Para automatizar el proceso de creación y envío de mensajes de correo electrónico, utilizaremos Aspose.Email for .NET, que es una poderosa API de manipulación y procesamiento de correo electrónico. Admite formatos de correo electrónico populares, incluidos los mensajes de MS Outlook, como MSG, EML/EMLX, etc. Puede descargar directamente la DLL de la API o instalarla mediante NuGet Package Manager o Package Manager Console en Visual Studio .

PM> Install-Package Aspose.Email

Después de haber creado una aplicación C# (Consola, ASP.NET, etc.) e instalado Aspose.Email for .NET, puede comenzar a crear y enviar correos electrónicos en C#.

Crear un correo electrónico de Outlook en C#

Para crear o manipular mensajes de correo electrónico de Outlook, Aspose.Email proporciona la clase MailMessage. Esta clase le permite establecer todas las propiedades de un mensaje de correo electrónico (Asunto, Para, De y Cuerpo), agregar archivos adjuntos y guardar el mensaje en diferentes formatos de correo electrónico como EML, MSG, MHTML, etc. Los siguientes son los pasos para crear un mensaje de correo electrónico:

  • Cree una instancia de la clase MailMessage.
  • Establezca las propiedades del mensaje.
  • Guarde el mensaje de correo electrónico utilizando el método MailMessage.Save().

El siguiente ejemplo de código muestra cómo crear y guardar un mensaje de correo electrónico en C#.

// Crear una nueva instancia de la clase MailMessage
MailMessage message = new MailMessage();

// Establezca el asunto del mensaje, el cuerpo y la información del remitente
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);

// Agregar a destinatarios y destinatarios de CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// Agregar archivos adjuntos
message.Attachments.Add(new Attachment("word.docx"));

// Guarde el mensaje en formatos EML, EMLX, MSG y 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);

Cree un correo electrónico de Outlook con cuerpo HTML en C#

Las etiquetas HTML se utilizan para hacer que el cuerpo del correo electrónico sea más estructurado, presentable y enriquecido con diferentes elementos como tablas, imágenes, listas, etc. En caso de que desee crear un correo electrónico con un cuerpo HTML, puede usar la propiedad MailMessage.HtmlBody. El siguiente ejemplo de código muestra cómo crear un correo electrónico de Outlook con cuerpo HTML en C#.

// Crear una nueva instancia de la clase MailMessage
MailMessage message = new MailMessage();

// Establecer asunto del mensaje, cuerpo HTML e información del remitente
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);

// Agregar a destinatarios y destinatarios de CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// Guardar mensaje en formato EML/EMLX/MSG/MHTML
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);

Cree un correo electrónico de Outlook con una codificación particular en C#

También puede especificar el estándar de codificación deseado para indicarle al navegador o la aplicación de correo electrónico cómo interpretar los caracteres en el cuerpo del correo electrónico. La propiedad MailMessage.BodyEncoding se utiliza para este fin. El siguiente ejemplo de código muestra cómo configurar la codificación del cuerpo al crear un correo electrónico de Outlook con C#.

// Crear una nueva instancia de la clase MailMessage
MailMessage message = new MailMessage();

// Establezca el asunto del mensaje, el cuerpo HTML, el remitente y la información del receptor
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 codificación 
message.BodyEncoding = Encoding.ASCII;

// Guardar mensaje en formato EML/EMLX/MSG/MHTML
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);

Envíe correos electrónicos de Outlook de forma síncrona o asíncrona en C#

Ahora, una vez que haya creado el mensaje de correo electrónico, puede enviarlo a sus destinatarios de forma sincrónica o asincrónica. La clase SmtpClient le permite enviar mensajes de correo electrónico de Outlook mediante SMTP (Protocolo simple de transferencia de correo). Los siguientes son los pasos para enviar un correo electrónico en C# utilizando Aspose.Email for .NET.

  • Cree o cargue un mensaje de correo electrónico utilizando la clase MailMessage.
  • Cree una instancia de la clase SmtpClient y configure el host, el nombre de usuario, la contraseña y el número de puerto.
  • Envíe correo electrónico de forma síncrona o asíncrona usando el método SmtpClient.Send o SmtpClient.SendAsync respectivamente.

Enviar un correo electrónico de Outlook sincrónicamente en C#

// Crear instancia de MailMessage. Puede crear un nuevo mensaje o cargar un archivo de mensaje ya creado (eml, msg, etc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// Crear una instancia de la clase SmtpClient
SmtpClient client = new SmtpClient();

// Especifique su host de correo, nombre de usuario, contraseña, número de puerto y opción de seguridad
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
try
{
	// Envía este correo electrónico
	client.Send(msg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

Enviar un correo electrónico de Outlook de forma asíncrona en C#

// Crear instancia de MailMessage. Puede crear un nuevo mensaje o cargar un archivo de mensaje ya creado (eml, msg, etc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// Crear una instancia de la clase SmtpClient
SmtpClient client = new SmtpClient();

// Especifique su host de correo, nombre de usuario, contraseña, número de puerto y opción de seguridad
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;

// Especifique su host de correo, nombre de usuario, contraseña, número de puerto y opción de seguridad
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit; 

// Enviar mensajes
client.SendAsync(msg);

Console.WriteLine("Sending message..."); 

msg.Dispose(); 

Enviar correos electrónicos masivos en C#

También puede crear y enviar correos electrónicos de forma masiva. La clase MailMessageCollection se usa para contener la colección de mensajes de correo electrónico que desea enviar. El siguiente ejemplo de código muestra cómo enviar correos electrónicos masivos en C#.

// Cree SmtpClient y especifique el servidor, el puerto, el nombre de usuario y la contraseña
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");

// Cree instancias de la clase MailMessage y especifique Para, De, Asunto y Mensaje
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?");

// Crear una instancia de MailMessageCollection y agregarle mensajes de correo electrónico
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);
 
try
{  
	// Enviar mensajes
	client.Send(manyMsg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

demostraciones en vivo

Conclusión

En este artículo, ha aprendido a crear correos electrónicos de Outlook en C#. Además, ha visto cómo enviar correos electrónicos de forma síncrona o asíncrona desde aplicaciones .NET. Puede explorar la documentación de Aspose.Email for .NET para obtener más información sobre la API.

Ver también