viernes, 10 de abril de 2009

Enviar Correo Electrónico con CSharp.net

Es posible enviar un correo electrónico mediante C#, mediante las clases System.Net, System.Net.Mail y System.Net.Mime

En el siguiente ejemplo se muestra un formulario que envia un simple correo electrónico a través del Servidor SMTP de GMAIL y se le adjunta una imagen ".jpg"
Clases que se deben de declarar:
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
//Se crea un Objeto llamado "msg" de la
clase
"MailMessage"

System.Net.Mail.MailMessage msg = new
System.Net.Mail.MailMessage();


//Se establece el destinatario

msg.To.Add("adrianmevi@hotmail.com");


/*Se establece el remitente, asi como el nombre que aparecerá en la

bandeja de entrada, así como el formato de codificación
*/

msg.From = new MailAddress("adrianmevi@gmail.com",
"Soy adry", System.Text.Encoding.UTF8);


//Se establece el asunto del mail

msg.Subject = "Prueba de envío de correo desde Cuenta Gmail en c# by
adryan";


//Formato de codificación del Asunto

msg.SubjectEncoding =
System.Text.Encoding.UTF8;


//Se establece el cuerpo del mail
msg.Body
= "Si veo este correo en una cuenta mía esque si se pudo jjejejejej !!!! by
adryan";


//Se establece la
codificación del Cuerpo

msg.BodyEncoding =
System.Text.Encoding.Unicode;


//Se indica si al cuerpo del mail, se interpretara como código
HTMl

msg.IsBodyHtml =
false;


//Se establece la cadena de texto con la ubicación del archivo a
adjuntar
string
file =
"d:/foto.jpg";

//Se adjunta el archivo

Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

ContentDisposition disposition = data.ContentDisposition;

disposition.CreationDate = System.IO.File.GetCreationTime(file);

disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);

disposition.ReadDate = System.IO.File.GetLastAccessTime(file);

msg.Attachments.Add(data);


//Se prepara el envio del mail creando un objeto de tipo
SmtpClient

SmtpClient client = new
SmtpClient();


//Se establecen las credenciales para enviar el mail, muy importante
autentificarse con la cuenta de correo y la contraseña

client.Credentials = new System.Net.NetworkCredential("adrianmevi@gmail.com",
"*************");


//Se establece el puerto de envio

client.Port =
587;


//Se establece el servidor SMTP, en este caso GMAIL

client.Host =
"smtp.gmail.com";

//Seguridad SSL si o
no

client.EnableSsl = true;


//Se envia el Mail controlando la
ecepción

try

{

client.Send(msg);

}
catch
(System.Net.Mail.SmtpException
ex)

{

MessageBox.Show(ex.Message);

}
Este código puede ir en el evento clic de un botón, en el evento load de un form o en donde se requiera colocarlo.
Como se menciono antes, es necesario contar con las clases indicadas, así como el archivo a adjuntar. Acerca de las credenciales, es importante tener una cuenta de correo electrónico en el cual podamos utilizar su servidor SMTP. GMAIL lo permite, pero parece ser que Hotmail no. Habría que probar con algún otro servidor de correo, como sería nuestro proveedor de internet, el del trabajo, etc.

No hay comentarios: