Pregunta

Puedo hacer que System.Net.Mail y System.Web.Mail trabajen con GMail, pero no puedo hacer que ambos trabajen con smtp.att.yahoo.com.

Obtengo la configuración SMTP de mis propias teclas de configuración de Web.config. Esta configuración funciona cuando envío usando System.Web.Mail, pero falla con System.Net.Mail.

    <add key="SmtpServer" value="smtp.att.yahoo.com"/>
    <add key="SmtpServerAuthenticateUser" value="ctrager@sbcglobal.net"/>
    <add key="SmtpServerPort" value="465"/>
    <add key="SmtpUseSSL" value="1"/>
    <add key="SmtpServerAuthenticatePassword" value="MY PASSWORD"/>

Aquí está el código que toma mi configuración, y funciona con GMail, falla con att.yahoo:

        SmtpClient smtp;

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServer", "")))
        {
           smtp = new SmtpClient(Util.get_setting("SmtpServer", ""));
        }
        else
        {
           smtp = new SmtpClient();
        }


        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerAuthenticatePassword", "")))
           smtp.Credentials = new System.Net.NetworkCredential(
               Util.get_setting("SmtpServerAuthenticateUser", ""), 
               Util.get_setting("SmtpServerAuthenticatePassword", ""));

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerPort", "")))
           smtp.Port = int.Parse(Util.get_setting("SmtpServerPort", ""));

        if (Util.get_setting("SmtpUseSSL", "0") == "1")
           smtp.EnableSsl = true;

        smtp.Send(message);

¿Es este mi problema?

http://blogs.msdn.com/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx

¿Fue útil?

Solución

He aprendido la respuesta. La respuesta es:

Porque System.Net.Mail no admite " implícito " SSL, solo " explícito " SSL.

Otros consejos

Las respuestas anteriores sobre conexiones SSL implícitas y explícitas a través de System.Net.Mail son absolutamente correctas. La forma en que pude superar este obstáculo, y sin tener que usar el ahora obsoleto System.Web.Mail, fue usar el CDO (Collaborative Data Objects).

Detallé y di un ejemplo en otra publicación de desbordamiento de pila ( GMail SMTP a través de C # .Net errores en todos los puertos ) si tiene curiosidad. De lo contrario, puede ir directamente al artículo de KB en http://support.microsoft.com/kb/310212 .

¡Espero que esto ayude!

La respuesta de Gimel es volver al frente. Dice que usa el nuevo Sistema. Red . Biblioteca de correo, pero el problema es que Sistema. Red . El correo no funciona para SSL en el puerto 465 como Sistema. Web . ¡El correo funcionó / ??funciona!

He golpeado mi cabeza contra esto todo el día y por configuraciones idénticas Sistema. Web .Mail WORKS, y Sistema. Red . Correo no funciona (al menos para el servidor SMTP con el que he estado probando), y aquí estaba pensando que siempre debería actualizar a la última oferta de Microsoft para obtener lo mejor de la vida. :-(

Ese enlace al blog de M $ parece indicarlo todo; " System.Net.Mail solo es compatible con "SSL explícito". " y asumo que el servidor SMTP que he estado probando requiere SSL implícito. (Es un servidor de Yahoo por cierto).

Desde " actualización " sin duda, la nueva API romperá la funcionalidad para los usuarios que tienen servidores que requieren SSL implícito, parece un paso atrás para "actualizar" en este caso. Si todavía puede compilar solo con advertencias, simplemente desactive esas advertencias (0618 si recuerdo) y continúe transportando en camiones. Ah, y es posible que desee considerar asegurarse de que su aplicación siempre se ejecute en la versión de .NET framework que creó y probó mediante un archivo de configuración, solo que en el futuro, si M $ extrae la API antigua, su aplicación es segura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top