Para enviar email a través de los servidores de Google (o Google App) o de desde Hotmail/Live.com es necesario configurar puertos específicos y habilitar SSL.
Ya nos comentaban como hacerlo por código José Alarcón Aguín
Como verán era necesario habilitar por codigo SSL con la propiedad EnableSsl (del SmptClient) . “Era” la única manera/forma antes de ASP.NET 4.0…
Un pedido hacia el equipo de ASP.NET era habilitarlo desde el web.config, y lo tenemos disponible… pueden verlo en el al pedido en Microsoft Connect
- Include "EnableSSL" option for System.Net.SmtpClient when using configuration file.
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=281277&wa=wsignin1.0
Introducción: Sección mailSettings en el web.config
Desde ASP.NET 2.0, tenemos una sección de configuración mailSettings, donde podremos configurar la sección smtp
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network …. />
</smtp>
</mailSettings>
</system.net>
En la parte smtp podremos configurar como la sección network (donde tenemos por medio de atributo de configuración la posibilidad de habilitar SSL)
Configurando la seccion mailSettings podremos enviar directamente sin previa configuración de la instancia de la clase SmtpClient, … un mensaje de correo:
SmtpClient smtpClient = new SmtpClient(); try { smtpClient.Send(emailMsg); } catch (System.Net.Mail.SmtpException ex) { //acciones }
Configurando… con “enableSsl” (nuevo desde ASP.NET 4.0)
Podemos incluir "EnableSSL" (que es una opción de la clase System.Net.Mail.SmtpClient) desde el archivo de configuración (sección mailSettings) y allí configurando network para el envío a través de SMTP.
Ejemplo de configuración con Google App:
Server SMTP: smtp.gmail.com / Port: 587 / Enable SSL
User: {user}@gmail.com // {user}@tudominio.com (Google App)
<system.net> <mailSettings> <smtp deliveryMethod="Network" from=username@gmail.com > <network enableSsl="true" defaultCredentials="false" clientDomain="www.tudominio.com" host="smtp.gmail.com" port="587" userName="username@tudominio.com" password="password"/> </smtp> </mailSettings>
Ejemplo para utilizar Live.com (nuestro Hotmail)
Server SMTP: smtp.live.com / Port: 587 / Enable SSL
User: {user}@live.com
<system.net> <mailSettings> <smtp deliveryMethod="Network" from="usuario@live.com"> <network enableSsl="true" defaultCredentials="false" clientDomain="www.tudominio.com" host="smtp.live.com" port="587" userName="usuario@live.com" password="password"/> </smtp> </mailSettings>
Notas sobre “enableSsl”
…from MSDN
(…)El atributo enableSsl especifica si se usa SSL para obtener acceso a un servidor de correo SMTP.La clase System.Net.Mail.SmtpClient sólo admite la extensión de servicio SMTP para SMTP seguro sobre Seguridad de la capa de transporte como se define en RFC 3207.En este modo, la sesión de SMTP
comienza en un canal no cifrado, a continuación, el cliente ejecuta un comando STARTTLS al servidor para intercambiar para proteger la comunicación mediante SSL.Vea RFC 3207 publicada por Internet Engineering Task Force (IETF) para obtener más información.Un método de conexión alternativo es donde una sesión de SSL se establece al frente antes de que se envíe cualquier comando de protocolo. Este método de conexión a veces se denomina SMTP/SSL y de manera predeterminada usa el puerto 465.Actualmente no se admite este método de conexión alternativo utilizando SSL.(…)
Enlaces
- <mailSettings> Elemento de configuración (Network Settings)
- Complete FAQ for the System.Net.Mail namespace
http://www.systemnetmail.com/
Súper, espectacular gracias por la info!!!