none
Problema al enviar un email desde aplicación a un SMPT de office365 RRS feed

  • Pregunta

  • Hola,

    en una aplicación web tengo el siguiente problema, cuando intento enviar un email a través de un servidor office365 obtengo el siguiente error:

    "El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [xxxx999xx9999.xxx999.PROD.OUTLOOK.COM]"

    El código que estoy utilizando es este:

    public void SendEmail()
    {
       MailMessage oMail = new MailMessage();
       oMail.From = new MailAddress("direccion@dominio.com");
       oMail.To.Add("destinatario@email.es");
       oMail.Subject = "Prueba";
       oMail.Body = "Prueba email";
       oMail.IsBodyHtml = true;
       oMail.Priority = MailPriority.Normal;
    
       SmtpClient oSMTPServer = new SmtpClient();
       oSMTPServer.Host = "smtp.office365.com";
       oSMTPServer.Port = 587;
       oSMTPServer.Credentials = new System.Net.NetworkCredential("direccion@dominio.com", "contraseña");
       oSMTPServer.EnableSsl = true;
       oSMTPServer.DeliveryMethod = SmtpDeliveryMethod.Network;
       oSMTPServer.UseDefaultCredentials = true;
       oSMTPServer.Send(oMail);
    }

    He probado con el puerto 25 y el puerto 587 y he realizado todas las combinaciones posibles con las propiedades: EnableSssl y UseDefaultCredentials.

    También he probado desactivando estas líneas, pero obtengo el mismo error:

    oSMTPServer.DeliveryMethod = SmtpDeliveryMethod.Network;
    oSMTPServer.UseDefaultCredentials = true;

    Comentar que este código me funciona si utilizo el smpt de Gmail por ejemplo.

    ¿Es posible enviar emails a través de office365 con la clase SmtpClient?, y si es que sí, ¿cómo?

    Me parece rarísimo que desde .NET cueste tanto enviar un email a través de otro producto de Microsoft.

    Gracias.

    martes, 19 de junio de 2018 6:55

Respuestas

  • Hola, debes habilitar TLS como medio de seguridad

     oSMTPServer.Credentials = new System.Net.NetworkCredential("direccion@dominio.com", "contraseña");
    oSMTPServer.EnableSsl = true;
    oSMTPServer.UseDefaultCredentials = false;
    
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

    Modifica los valores del enumerado SecurityProtocolType hasta que encuentres el que se adecúe. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    lunes, 6 de julio de 2020 12:19
    Moderador
  • O Inclusive qye detecte aitomáticamente la versión SSL/TLS

     oSMTPServer.ConnectType = SmtpConnectType.ConnectSSLAuto;


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 6 de julio de 2020 12:20
    Moderador

Todas las respuestas

  • Hola,

    yo estoy con el mismo problema y he probado todas las combinaciones que mencionas. Has podido resolver el problema? y si es así, puedes pasarme la solucion

    lunes, 6 de julio de 2020 12:00
  • Hola, debes habilitar TLS como medio de seguridad

     oSMTPServer.Credentials = new System.Net.NetworkCredential("direccion@dominio.com", "contraseña");
    oSMTPServer.EnableSsl = true;
    oSMTPServer.UseDefaultCredentials = false;
    
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

    Modifica los valores del enumerado SecurityProtocolType hasta que encuentres el que se adecúe. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    lunes, 6 de julio de 2020 12:19
    Moderador
  • O Inclusive qye detecte aitomáticamente la versión SSL/TLS

     oSMTPServer.ConnectType = SmtpConnectType.ConnectSSLAuto;


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 6 de julio de 2020 12:20
    Moderador
  • Hola,

    Tenemos el mismo inconveniente. Pero solo con contraseñas cuales contienen caracteres especiales. Aprobado con ñ. Pero asumo también con acentos.

    ¿Contiene también en su caso la contraseña un carácter especial?

    También tenemos un diferencia. Usamos en nuestro código:

    oSMTPClient.UseDefaultCredentials = false;

    Esto funciona para las cuentas con credenciales sin carácter especial.

    martes, 15 de septiembre de 2020 14:52