Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

viernes, 28 de marzo de 2008

Correo electrónico con C# y Gmail

Intentando "hermanar" las tecnologías de dos de los titanes del software mundial, Google y Microsoft, he encontrado en Google Code una biblioteca para desarrollar en .NET aplicaciones que hagan uso de las diversas APIs de Google. Se trata de la .NET Client Library Developer, bastante obsoleta ya que se requiere el .NET Framework 1.1, que actualmente carece de soporte por parte de Microsoft. Sin embargo, poder gozar de toda la potencia de las herramientas de Google (Google Maps, GMail, GTalk, Calendar...) desde una aplicación .NET, gracias a la interoperabilidad de estas tecnologías puede ser un aspecto a tener en cuenta.


Dejo hoy un pequeño código en el que he estado trabajando. Permite enviar correos a través de GMail (aunque el código es extensible a cualquier servidor de correo con soporte SMTP). Aunque relacionado con lo que comentaba anteriormente, realmente no hace uso de la API de Google, sino de System.Net.Mail del .NET Framework 2.0. El código es realmente simple, limitándose a establecer una conexión con el servidor SMTP (en Gmail, a través de los puertos 587 ó 465, en lugar del típico puerto 25), y realizar un envío usando la clase System.Net.Mail.MailMessage. En próximos días, más :)


[csharp]
public void SendMail(string destinationAddress, string subject, string body)
{
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
msg.To.Add(destinationAddress);
msg.From = new MailAddress("tudireccion@gmail.com", "TuNombreYApellidos", System.Text.Encoding.UTF8);
msg.Subject = subject;
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.Body = body;
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.IsBodyHtml = false;

// Configuración SMTP
SmtpClient mailSmtp = new SmtpClient();
mailSmtp.Host = "smtp.gmail.com";
mailSmtp.Credentials = new System.Net.NetworkCredential("tudireccion@gmail.com", "tucontraseña");
mailSmtp.EnableSsl = true;
mailSmtp.Port = 587;

try
{
mailSmtp.Send(msg);
}
catch (SmtpException ex)
{
throw ex;
}
}
[/csharp]

10 comentarios:

  1. [...] A continuación, añadimos la funcionalidad de envío de correo que creamos en el post sobre el envío de correos mediante Gmail y C#. Lo ideal sería, cuando tuviésemos la funcionalidad de envío y recepción de correo completa, [...]

    ResponderEliminar
  2. Cual seria el codigo para una aplicacion con framework 1.1, ya que en el framework 1.1 no existe el assembly system.net.mail

    gracias.

    http://frasesmessenger.unlugar.com
    http://usuarios.lycos.es/mimejorfrase

    ResponderEliminar
  3. Gracias por el código funciona muy bien,
    XD.....,

    Pero tengo una preguna, como podría hacer para que el usuario y clave de autenticacion sena dinamicos de acuerdo al usuario que esta logeado en mi pagina.

    Gracias.

    ResponderEliminar
  4. Hola Luis.

    Sobre tu pregunta, habría que ver cómo guardas la información del usuario y su contraseña. Posiblemente lo mantengas en sesión, ¿verdad? Su nombre de usuario podrías recuperarlo del valor de la variable de sesión que estés usando. Respecto a la contraseña, imagino que eso no estará rondando por la aplicación, sino que simplemente validaras al usuario cuando se conecte mediante una base de datos o alguna herramienta similar. De ahí deberías recuperar la contraseña para dicho usuario (si es que es posible, y no la tienes almacenada cifrada con algún algoritmo hash) y reutilizarla. Pero cuidado por posibles inyecciones de código que puedan vulnerar la seguridad de tu sitio web.

    Si tienes alguna duda más o quieres enviarnos la parte de código donde se gestiona a tus usuarios para echarte una mano, esta es tu casa.

    Un saludo,

    Mith.

    ResponderEliminar
  5. Hola,

    Excelente el post, llevaba varios día buscando una ayuda como ésta....

    Muchas Gracias.

    ResponderEliminar
  6. Muy buenas Manuel.

    Me alegra que te haya sido útil el ejemplo.

    Saludos.

    ResponderEliminar
  7. Hola, ya e buscado por muchos post y el tuyo es el mas completo en el tema tengo mi codigo igual al tuyo y no me manda el correo me dice Failure sending mail.

    no se si pueda ser algun problema con mi router, gracias.

    ResponderEliminar
  8. Podría ser, Ajads. De todas formas es posible que Google haya cambiado algunos parámetros de configuración en este tiempo (como los puertos usados). Revisa eso por si fuera el origen de tu problema.

    Saludos.

    ResponderEliminar
  9. Como agregar varios destinatarios al correo?

    ResponderEliminar
  10. el Subject no me permite tildes aun colocando
    este codigo msg.SubjectEncoding = System.Text.Encoding.UTF8;
    por favor espero tu respuesta

    ResponderEliminar