Enviar un e-mail mediante SmtpClient

La clase SmtpClient se utiliza para enviar correo electrónico a un servidor SMTP para su entrega. Podemos incluir datos adjuntos, indicar diferentes direcciones de correo a donde deseamos enviar el mensaje, al terminar de usar esta clase debemos liberar los recursos llamando al método Dispose().

Como enviar un email

Lo primero es crear el objeto SmtpClient e indicarle el equipo host que usaremos para transmitir el mensaje más el puerto.

SmtpClient client = new SmtpClient("smtp.gmail.com", 587);

Al utilizar un servidor smtp como gmail debemos identificarnos con nuestra dirección de correo y la contraseña de este modo:

client.Credentials = new NetworkCredential("mi_direccion@gmail.com", "contraseña");

Luego debemos indicar quien envía el mansaje y quien lo recibirá, lo hacemos de esta manera:

MailAddress from = new MailAddress("mi_direccion@gmail.com", "nombre" );
MailAddress to = new MailAddress("destinatario@server.com");

Ahora vamos a definir el cuerpo del mensaje, su contenido y la línea de asunto que normalmente lleva un correo electrónico. En la propiedad Body establecemos el contenido del mansaje y en Subject el asunto pertinente al correo, establecemos la codificación de ambas propiedades en UTF8.

MailMessage message = new MailMessage(from, to);
message.Body = "Escribir el mensaje que deseamos enviar aqui.";
message.Body += Environment.NewLine;
message.BodyEncoding = Encoding.UTF8;
message.Subject = "Asunto por el que enviamos el mensaje.";
message.SubjectEncoding = Encoding.UTF8;

Seguido vamos agregar un manejador de eventos para el evento SendCompleted el cual nos indicara cuando se haya enviado un mensaje.

client.SendCompleted += new SendCompletedEventHandler(MensajeEnviado);

Con esto tenemos todo listo y ya podemos enviar el mensaje, los podemos hacer de forma síncrona (Send) o de manera asíncrona (SendAsync).

client.SendAsync(message, userToken);

Por ultimo solo nos queda ver como cancelar el envió de un mensaje y liberar recursos, lo hacemos de esta manera:

client.SendAsyncCancel();
message.Dispose();

Como adjuntar archivos

Generalmente cuando enviamos un mensaje este puede contener solo texto con alguna información que deseemos enviar, pero en algunas ocasiones nos veremos en la necesidad de enviar otros archivos adicionales como imágenes por ejemplo, para hacer esto usaremos la clase Attachment.

string archivoadjunto = @"C:\Users\img.jpg";
Attachment data = new Attachment(archivoadjunto, MediaTypeNames.Image.Jpeg); 

Debemos indicar el archivo que deseamos enviar y además el tipo del archivo.
Por ultimo solo debemos agregar el contenido adjunto al mensaje.

message.Attachments.Add(data);

Eso es todo por ahora, espero les sea de ayuda, descarga de código aquí.

Comentarios

Entradas populares de este blog

Conectar SQL Server con Java

Entrenar OpenCV en Detección de Objetos

Acceso a la webcam con OpenCV

JavaFx 8 Administrar ventanas

Analizador Léxico