Enviar un Email Usando SMTP desde C#

Programación En .NET Add comments

                                      Email

         Buenas, debido a pequeños proyectos que he tenido que realizar no me ha quedado tiempo de actualizar este humilde blog, asi que hoy lo hare con un proyecto muy interesante y a la vez entretenido, enviar un email desde una aplicacion creada en Visual Studio, y en esta oportunidad debido a intereses propios usare c#.

En este proyecto enviare un email simple, quizas cuando tenga tiempo lo haga mejor, el servidor que utilizare sera el de gmail aunque ustedes pueden modificarlo para enviarlo desde su cuenta de yahoo o hotmail por ejemplo.

Solo necesitaran un formulario.

Una caja de texto para el usuario del email

Una caja de texto para la contraseña del usuario

Una caja de texto para el campo de "to"

Una caja de texto para el campo de "subject"

Una caja de texto para el contenido del email "body"

Lo primero que deberan utilizar es la libreria mail ubicada en:

System.Net.Mail

para usar el namespace en c# deberan agregar el codigo siguiente(es opcional) donde se declaran los namespaces que utilizaremos en el proyecto.

using System.Net.Mail;

Luego agregar un boton para enviar el email, aunque pueden hacerlo desde una clase aparte, como repito debido al tiempo lo hare lo mas simple posible.

//Boton Para Enviar Email 
 
private void btnEnviar_Click(object sender, EventArgs e) 
{ 
 
//Declarando Variables 
string From; 
string To; 
string Message; 
string Subject; 
string smtpServer; 
System.Net.Mail.MailMessage Email; 
 
 
//Aplicando los campos a cada variable 
 
From = this.txtDe.Text; 
To = this.txtPara.Text; 
Message = this.txtTextoEmail.Text; 
Subject = this.txtSubject.Text; 
 
 
//Establesco El Email 
 
Email = new System.Net.Mail.MailMessage(From, To, Subject, Message); 
 
System.Net.Mail.SmtpClient smtpMail = new System.Net.Mail.SmtpClient("smtp.gmail.com"); 
 
Email.IsBodyHtml = false; 
 
smtpMail.EnableSsl = true; 
 
smtpMail.UseDefaultCredentials = false; 
 
smtpMail.Host = "smtp.gmail.com" 
 
smtpMail.Port = 25; 
 
smtpMail.Host = "smtp.gmail.com" 
smtpMail.Credentials = new System.Net.NetworkCredential(this.txtDe.Text, txtContraseña.Text); 
 
//smtpMail.ClientCertificates. 
 
smtpMail.Send(Email); 
 
}
 
 
Bueno como podran observar no es la gran cantidad de codigo, pero explicare el codigo por bloques para su comprension.
 
//Declarando Variables 
string From; 
string To; 
string Message; 
string Subject; 
string smtpServer; 
System.Net.Mail.MailMessage Email; 
 
 
Aqui lo que se hace es declarar las variables que utilizare para enviar un email.
 
-------------------------------------------------------------------------------------------------------------------------
 
//Aplicando los campos a cada variable
 
From = this.txtDe.Text; 
To = this.txtPara.Text; 
Message = this.txtTextoEmail.Text; 
Subject = this.txtSubject.Text; 
 

Aqui lo que se hace es pasarle los campos que ha introducido al usuario al email.

Deben de cambiar el nombre de los cuadros de texto por el que ustedes le han puesto.

//Establesco El Email, y le paso las variables que introdujo el usuario
 
Email = new System.Net.Mail.MailMessage(From, To, Subject, Message); 
 
 
//creo el objeto smtp e introdusco el host que en este caso he utilizado el de gmail
 
System.Net.Mail.SmtpClient smtpMail = new System.Net.Mail.SmtpClient("smtp.gmail.com"); 
 
 
//Establesco que no es html el cuerpo del email
 
Email.IsBodyHtml = false; 
 
 
//Establesco que usare seguridad
 
//ssl = Secure Sockets Layer
 
smtpMail.EnableSsl = true; 
 
smtpMail.UseDefaultCredentials = false; 
 
 
//Establesco el puerto del email en este caso el 25
 
smtpMail.Port = 25; 
 
 
//Coloco las credenciales, coloco el usuario y contraseña que introdujo el usuario 
smtpMail.Credentials = new System.Net.NetworkCredential(this.txtDe.Text, txtContraseña.Text); 
 
p>
 
 
//Envio el email
 
smtpMail.Send(Email); 
 

 

DESCARGAR CODIGO FUENTE

Algunos links interesantes acerca de las librerias y palabras vistas en este proyecto, les dejo a sus conocimientos el que mejoren este codigo con un archivo adjunto y una mejor experencia para el usuario.

Las librerias que uso aqui son las mismas para visual basic, asi que no tendran ningun problema en aplicarlo para Visual Basic.

*He utilizado VS 2005 no se si faltara alguna de estas librerias en VS 2003

http://es.wikipedia.org/wiki/Transport_Layer_Security

http://msdn2.microsoft.com/en-us/library/system.net.mail.aspx

36 Responses to “Enviar un Email Usando SMTP desde C#”

  1. elmercarias Says:

    Thumb up 0 Thumb down 0

    Asi es, para VS2003 no existen las librerías System.Net.* ya que eso es propio del FrameWork 2.0. En VSNET 2003 el envío de correos se hace con System.Web.Mail.SmtpMail

  2. Benjamin Zepeda Says:

    Thumb up 0 Thumb down 0

    Gracias por el dato.

  3. Wera Says:

    Thumb up 0 Thumb down 0

    Esta muy interesante su articulo, y quiero hacerle una pregunta: de que manera se puede modificar para poder utilizarlo con una cuenta de correo de hotmail? estoy investigando una forma de lograr esto pero no he encontrado ninguna :(

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  4. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    Hotmail no lo acepta tan fácil :( , en internet puedes encontrar muchos smtp o pop3, pero ten en cuenta que estos pasan antes por una tercera parte, por lo que pueden quedarse con tu cuenta para spam.

    Al insertarlo com smp.live.com te da una excepción de autenticación, tendrias que leer algo de esto:

    http://msdn.microsoft.com/en-us/library/system.net.networkcredential.aspx

    http://msdn.microsoft.com/en-us/library/system.net.credentialcache.aspx

    Creo que manana(Domingo 8 de junio) lo intentare con mas tiempo, asi que pendiente…

    Gracias por visitar mi blog

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
  5. Wera Says:

    Thumb up 0 Thumb down 0

    Muchas gracias por su respuesta :D y tan rapido! investigue un poco mas y encontre una forma de anexar credenciales de la clase NetworkCredential, pero ahora mi problema es que me piden que funcione en VS 2003 :S y creo que no entiendo muy bien como se usan estas credenciales en 2003, y tambien no se si necesite utilizar un WebRequest para poder usar todo esto en 2003, si me puede aclarar esta duda se lo agradecere mucho! gracias por todo y espero su respuesta :)

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  6. Wera Says:

    Thumb up 0 Thumb down 0

    Hola de nuevo, me enfade de buscar formas de hacerlo en VS 2003 y me instale la version 2005, y actualice mi aplicacion, ahora necesito que funcione en hotmail porque ya lo probe con gmail y funciona! sobre la autenticacion le mande la credencial con mi cuenta y mi password y me pone que no se puede conectar al servidor remoto, asi que no se que mas hacer, bueno espero que me pueda ayudar :D

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  7. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    que smtp utilizas?

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
  8. Wera Says:

    Thumb up 0 Thumb down 0

    He alli mi problema, no tengo un servidor remoto mas que los gratuitos de internet, y cuando lo probe con gmail utilice el del mismo (smtp.gmail.com) y quise que funcionara con varios smtp de hotmail que vi por internet (mail.hotmail.com, smtp.live.com, ect) y como no funciona en VS2003 como en VS2005 a lo mejor necesito tener una cuenta premium del hotmail :( , pero mi pregunta ahora es que abra alguna manera de enviar correos gratis con el hotmail? si no tendre que hacerlo con otra cuenta de otro correo

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  9. Wera Says:

    Thumb up 0 Thumb down 0

    P.D. Tambien lo estoy intentando con yahoo, pero aun no he logrado que se envie un correo, el smtp que estoy usando es smtp.mail.yahoo.com y el puerto 587, tiene mi cuenta, mi contraseña y el SSL en true

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  10. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    Con yahoo no funciona, solo que tengas la cuenta premiun que cuesta alrededor 20$ al año…

    Como dice arriba la ibreria System.Net.* en vs 2003 no existe, y usarlo en hotmail es dificil, si usas smtp raros puedes dar tu contraseña a una tercera persona, te recomiendo gmail o cualquiera otro gratuito

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
  11. Wera Says:

    Thumb up 0 Thumb down 0

    Muchas gracias por el consejo, no me habia dado cuenta de ese riesgo :S y alli tengo todos mis correos importantes :O pero weno, la razon de pasar todo al 2005 era para probar los ejemplos que encontre en internet donde usaban el smtp del hotmail, pero dado al fracaso de esto, opte por seguir en 2003, con el codigo de autenticacion que se usa alli, claro esta, es casi casi lo mismo solo que aqui las credenciales se escriben de otra manera, y sobre yahoo, me dijeron que en las opciones de mi cuenta habilitara el servicio pop3 (que por defecto esta inhabilitado) y que le pusiera el puerto y el servidor smtp que te lo dan alli mismo y wala! problema resuelto :D
    Espero que algun dia los codos de hotmail hagan lo mismo! tacaños! jeje

    Muchas gracias por todo y bye! cuidese!

    Atte.
    Adriana

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  12. el DanyVoy Says:

    Thumb up 0 Thumb down 0

    Gracias

    Usando Safari Safari 525.21 en Mac OS Mac OS X
  13. TheAngeluss Says:

    Thumb up 0 Thumb down 0

    He encontrado varios codigos similares por la red pero ninguno me funciona, ne he descargado tu codigo fuente y aplicacion la pruebo y no me funciona, mi pregunta es ¿que estoy haciendo mal?
    tengo el visual studio 2005, he creado una cuenta en gmail para el De: y Password: y aun asi no me llega ningun correo, siempre me sale que requiere algun tipo de autentificacion, gracias por la posible ayuda

    Usando Mozilla Firefox Mozilla Firefox 3.0.2 en Windows Windows XP
  14. TheAngeluSs Says:

    Thumb up 0 Thumb down 0

    cuanto tendre que esperar? jaja, espero que no sea hasta que me ponga a hacer otra cosa diferente

    Usando Safari Safari 525.21 en Mac OS Mac OS X
  15. TheAngeluSs Says:

    Thumb up 0 Thumb down 0

    que cachoso este blog solo quise probar, pero si toy usando safari pero en Windows XP

    Usando Safari Safari 525.21 en Mac OS Mac OS X
  16. TheAngeluSs Says:

    Thumb up 0 Thumb down 0

    y opera?

    Usando Opera Opera 9.52 en Windows Windows XP
  17. TheAngeluss Says:

    Thumb up 0 Thumb down 0

    funciona!!!!
    //codigo cambiado, el 25 ya no es valido
    smtpMail.Port = 587;//o 465

    Ahora que es IMP y POP podrian decirme???

    Usando Mozilla Firefox Mozilla Firefox 3.0.2 en Windows Windows XP
  18. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    Que bien que te funciona, y pues por lo general siempre contesto en las noches por el trabajo y el estudio…

    POP = Es el protocolo para recibir emails.

    IMP = Es un programa de emails, que esta realizado en php, y te permite acceder a cuentas POP3 o IMAP

    http://www.horde.org/imp/

    o puede ser el IMP programming language, depende de lo que estes buscando.

    http://en.wikipedia.org/wiki/IMP_programming_language

    Gracias por visitar el blog :)

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
  19. Denise Says:

    Thumb up 0 Thumb down 0

    Gracias por el dato!!!
    Claro que funciona tu codigo!!!

    Usando Internet Explorer Internet Explorer 6.0 en Windows Windows XP
  20. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    :0 me alegra, gracias por visitar mi blog :D

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
  21. Carlos Heli Says:

    Thumb up 0 Thumb down 0

    Muchas gracias por el ejemplo

    me funciono bien

    Usando Internet Explorer Internet Explorer 6.0 en Windows Windows XP
  22. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    Ok gracias por visitar mi blog :) , cualquier duda ya sabes…

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
  23. C#ristian Says:

    Thumb up 0 Thumb down 0

    Hey, Whibla, tengo un problema con esta onda, no se si se jodió con la actualización a SP1 del framework 2.0, pero ultmamente envio correos y nunca son recibidos, no da ningun mensaje de error, simplemente NO CAEN.
    Probe otra aplicación en mi server, solamente que con el framework 3.5 y si son recibidos.
    Asi que ni modo, me tocará formatear y reinstalar, ojala q pueda funcionar bien :(

    Usando Mozilla Firefox Mozilla Firefox 3.0.6 en Windows Windows XP
  24. Jose Benjamin Zepeda Says:

    Thumb up 0 Thumb down 0

    Que raro, pero gracias por la solucion. lastima que haya que formatear eso si es aburrido… pero pasa con frecuencia en windows.

    Slds, y gracias por visitar mi blog :D

    Usando Mozilla Firefox Mozilla Firefox 3.0.6 en Windows Windows Vista
  25. stocio Says:

    Thumb up 0 Thumb down 0

    hola sobre tu codigo me sale error de que no me envia que puedo hacer

    Usando Internet Explorer Internet Explorer 6.0 en Windows Windows XP
  26. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    Te da algun error de los que se han hablado en los comentarios anteriores?

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP
  27. Ivan Says:

    Thumb up 0 Thumb down 0

    una pregunta y si quisiera enviar a multiples correos como seria?, y de antemano gracias!!!

    Usando Mozilla Firefox Mozilla Firefox 3.0.10 en Windows Windows XP
  28. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    Para ser sincero lo único que se me ocurre es lo siguiente:

    Leer y asignar en una variable un mail que va a leer a la base de datos, esto esta dentro de un bucle. Asi podras enviar múltiples mails. Comprendes la idea?

    Usando Mozilla Firefox Mozilla Firefox 3.0.8 en Windows Windows Vista
  29. Ivan Says:

    Thumb up 0 Thumb down 0

    Gracias Benjamin, ya te entendi, y aparte encontre otra manera haciendo uso de split

    Usando Internet Explorer Internet Explorer 6.0 en Windows Windows XP
  30. Benjamin Zepeda Says:

    Thumb up 0 Thumb down 0

    No pense en esa… esa es mejor :)

    Usando Mozilla Firefox Mozilla Firefox 3.0.8 en Windows Windows Vista
  31. Larry Says:

    Thumb up 0 Thumb down 0

    Hola, un favor necesito crear cuentas de correo desde una aplicacion en Visual Studio me podrias ayudar con ese detalle, probe tu aplicación y funciono a mil maravillas con la cuenta de gmail.
    Gracias de antemano

    Usando Mozilla Firefox Mozilla Firefox 3.0.10 en Windows Windows XP
  32. Benjamín Zepeda Says:

    Thumb up 0 Thumb down 0

    lamentablemente no se como hacer lo que quieres, seria de leer los servicios que google da a los desarrolladores para saber si se puede o no crear cuentas en gmail.

    Slds y gracias por visitar mi blog

    Usando Mozilla Firefox Mozilla Firefox 3.0.8 en Windows Windows Vista
  33. Adrian Says:

    Thumb up 0 Thumb down 0

    Hola!
    He seguido tus instrucciones, y al enviarlo me da un error; concretamente:

    “No es posible conectar con el servidor remoto”.

    A que puede ser debido?? Muchas gracias!!

    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
  34. eeklipsee Says:

    Thumb up 0 Thumb down 0

    Gracias!! Muy buen ejemplo!

    En 4 minutos ya estoy enviando emails..

    Usando Mozilla Firefox Mozilla Firefox 3.0 en Windows Windows XP
  35. Benjamin Zepeda Says:

    Thumb up 0 Thumb down 0

    De nada eelipsee, en cuanto a tu problema Adrian deberias revisar bien los host que has puesto ya que no te estas conectando, revisa los puertos.

    Gracias por visitar mi blog.

    Usando Internet Explorer Internet Explorer 8.0 en Windows Windows XP
  36. Hgarcia Says:

    Thumb up 0 Thumb down 0

    Gracias, muchas gracias por este codigo, me fue de gran utiilidad

    Usando Internet Explorer Internet Explorer 8.0 en Windows Windows XP

Deja Un Comentario

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in