Principales respuestas
Problema al enviar un email desde aplicación a un SMPT de office365

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.
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
- Editado Sergio ParraModerator jueves, 17 de septiembre de 2020 13:32
- Marcado como respuesta Sergio ParraModerator jueves, 17 de septiembre de 2020 13:32
-
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
- Marcado como respuesta Sergio ParraModerator jueves, 17 de septiembre de 2020 13:32
Todas las 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
- Editado Sergio ParraModerator jueves, 17 de septiembre de 2020 13:32
- Marcado como respuesta Sergio ParraModerator jueves, 17 de septiembre de 2020 13:32
-
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
- Marcado como respuesta Sergio ParraModerator jueves, 17 de septiembre de 2020 13:32
-
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.