Sunteți pe pagina 1din 4

Aurelio Lpez Ovando 1

Enviar correo electrnico desde C# (Hotmail/outlook)


Imaginemos que estamos que estamos haciendo un proyecto en donde los reportes no slo se deban mandar a la impresora,
sino que desde el mismo sistema sea posible mandarlo por correo electrnico, es una realidad que estas prcticas cada vez se
vuelves mas comunes, tener sistemas verstiles que permitan hacer diferentes operaciones sin necesidad de salirse del mismo.
Protocolo SMTP
El Simple Mail Transfer Protocol (SMTP) (Protocolo para la transferencia simple de correo electrnico), es un protocolo de la
capa de aplicacin. Protocolo de red basado en texto, utilizados para el intercambio de mensajes de correo electrnico entre
computadoras u otros dispositivos (PDA, telfonos mviles, etc.). Est definido en el RFC 2821 y es un estndar oficial de
Internet.
Clase System.Net.Mail en C#
Microsoft proporciona en su Framework las clases nativas con las cuales podemos crear y enviar un correo electrnico.
Clase MailMessage.
Debemos crear una instancia de la clase MailMessage y definirla con los siguientes atributos:
To: Direccin de corre electrnico donde enviaremos el correo electrnico, podemos utilizar el metodo "add" para
incluirlo.
From: Direccin de correo electrnico desde donde se enviara el correo electrnico.
Subject: Define el ttulo del correo electrnico.
Body: Define el cuerpo del correo electrnico.
IsBodyHtml: Indica si el cuerpo del correo electrnico esta es formato HTML.
Priority: Definir la prioridad del correo electrnico (esto es ignorado por casi todos los servidores de correo
electrnico).
Definir instancia de SMTP
Se definir una instancia de la clase SmtpClient en la cual utilizaremos los siguientes atributos:
Host: El servidor anfitrin que enviara el correo electrnico.
Port: El numero de puerto de salida del correo electrnico (por defecto es el puerto 25).
EnableSsl: Indicador si esta habilitado el certificado SSL.
UseDefaultCredentials: Indicador si se utilizaran los credenciales predeterminados.
Credentials: Credenciales a utilizar para enviar el correo electrnico por medio del protocolo SMTP, este atributo
recibe un objeto de la clase NetworkCredential.
En la siguiente imagen se muestran algunos parmetros de configuracin para diferentes servidores.

Aurelio Lpez Ovando 2

Posteriormente se usara el metodo send(MailMessage mailMessage) para enviar el correo electrnico, este mtodo recibe
como parmetro un objeto de tipo MailMessage, y luego es necesario liberar todos los recursos utilizados por el objeto
MailMessage y de esta forma liberar memoria.

Enviar un correo desde C#
Comenzamos creando un nuevo proyecto WPF desde C# al cual llamaremos Mail.

Creamos un formulario como se muestra:

Aurelio Lpez Ovando 3

Creamos una nueva clase a la que llamaremos Mail (Proyecto Agregar clase) y le ponemos el siguiente cdigo:





























using System;
using System.Net.Mail;
using System.Net;
using System.Windows;

namespace MailWPF
{
class SendMail
{
string emisor;
public string Emisor
{
get { return emisor; }
set { emisor = value; }
}

string pwd;
public string Pwd
{
get { return pwd; }
set { pwd = value; }
}

//Constructor
public SendMail(string de, string pass)
{
emisor = de;
pwd = pass;
}

/// <summary>
/// Se enva un correo electronico con texto simple
/// </summary>
/// <param name="destinatario">Quien escribe el correo</param>
/// <param name="asunto">Asunto del correo</param>
/// <param name="correo">Cuerpo del correo (contenido)</param>
public void sendMail(string destinatario, string asunto, string correo)
{
MailMessage msg = new MailMessage();

//Quien escribe al correo
msg.From = new MailAddress(emisor);
//A quien va dirigido
msg.To.Add(new MailAddress(destinatario));
//Asunto
msg.Subject = asunto;
//Contenido del correo
msg.Body = correo;

//Servidor smtp de hotmail
SmtpClient clienteSmtp = new SmtpClient();
clienteSmtp.Host = "smtp.live.com";
clienteSmtp.Port = 25;
clienteSmtp.EnableSsl = false;
clienteSmtp.UseDefaultCredentials = false;

//Se envia el correo
clienteSmtp.Credentials = new NetworkCredential(emisor, pwd);
clienteSmtp.EnableSsl = true;

try
{
clienteSmtp.Send(msg);
MessageBox.Show("Correo enviado");
}

catch (Exception ex)
{
MessageBox.Show("Error al enviar el correo " + ex.Message);
}
}
}
}

Aurelio Lpez Ovando 4

La clase tiene dos atributos (privados) que son el emisor y la contrasea de la cuenta que enva el correo (que son inicializadas
en el constructor) y un mtodo que recibe dos parmetros que corresponden a quien recibe, el asunto y el contenido del
correo.
Mail

- string emisor
- string pwd


+ Mail(string de, string pass)
+ void sendMail(string destinatario, string asunto, string correo)


En el botn colocamos el siguiente cdigo



Nota: En el cdigo se ha borrado la contrasea, pero se entiende que el dato es la contrasea de la cuenta.
En este ejemplo desde la cuenta ceicampeche@hotmail.com se est enviando un correo a cualquier direccin existente que se
escriba en el textobox txTo del formulario.

Vemos que el correo ha llegado satisfactoriamente a la bandeja de entrada.



private void btnSend_Click(object sender, RoutedEventArgs e)
{
SendMail m = new SendMail("ceicampeche@hotmail.com","vigil4nt3");
m.sendMail(txTo.Text, txSubject.Text, txBody.Text);
}

S-ar putea să vă placă și