c# smtp timeout

c# - 5.7.57 SMTP: el cliente no se autenticó para enviar correo anónimo durante el error MAIL FROM



timeout (12)

Tengo que enviar correos usando mi aplicación web. Dado el siguiente código que muestra The SMTP server requires a secure connection or the client was not authenticated. The server response was: The SMTP server requires a secure connection or the client was not authenticated. The server response was:

5.7.57 SMTP; El cliente no se autenticó para enviar correo anónimo durante CORREO DESDE.

Ayúdame a encontrar una solución adecuada. Gracias.

Código:

protected void btnsubmit_Click(object sender, EventArgs e) { Ticket_MailTableAdapters.tbl_TicketTableAdapter tc; tc = new Ticket_MailTableAdapters.tbl_TicketTableAdapter(); DataTable dt = new DataTable(); dt = tc.GetEmail(dpl_cate.SelectedValue); foreach (DataRow row in dt.Rows) { string eml = (row["Emp_Email"].ToString()); var fromAddress = "emailAddress"; var toAddress = eml; const string fromPassword = "*****"; string body = "Welcome.."; // smtp settings var smtp = new System.Net.Mail.SmtpClient(); { smtp.Host = "smtp.office365.com"; smtp.Port = 587; smtp.EnableSsl = true; smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; smtp.Credentials = new NetworkCredential(fromAddress, fromPassword); smtp.UseDefaultCredentials = false; smtp.Timeout = 600000; } // Passing values to smtp object smtp.Send(fromAddress, toAddress, subject, body); } } }


@ Reshma: en caso de que aún no lo hayas imaginado, aquí hay algunas cosas que probé y resolvió el mismo problema.

  1. Asegúrese de que las credenciales de red que establezca sean correctas. Por ejemplo, en mi caso, ya que se trataba de SMTP de oficina, la identificación de usuario tenía que usarse en la credencial de red junto con el nombre de dominio y no la identificación de correo electrónico real.

  2. Primero debe establecer "UseDefaultCredentials" en falso y luego establecer Credentials. Si establece "UseDefaultCredentials" después de eso, restablece NetworkCredential a nulo.

Espero eso ayude.


Cambié la contraseña de Office365 y luego intenté enviar un correo electrónico de prueba y funcionó de maravilla para mí.

Utilicé el front-end (opción de correo de la base de datos) y la configuración como número de puerto smtp.office365.com 587 y verifiqué la opción de conexión segura. use autenticación básica y almacene las credenciales. Espero que esto resulte útil para alguien.


Comenzó a trabajar después de agregar propiedad:

mail.smtp.starttls.enable=true

Utilizando:

mail.smtp.host=smtp.office365.com mail.smtp.port=587 mail.transport.protocol=smtp mail.smtp.auth=true mail.smtp.starttls.enable=true [email protected] mail.smtp.password=xxx [email protected]


Dos razones principales solo como se menciona en los comentarios anteriores

  1. Las credenciales de red que establezca deben ser correctas. Verifique con intentar iniciar sesión en la cuenta.
  2. UseDefaultCredentials debe establecer UseDefaultCredentials en false y luego establecer Credentials Or Put smtp.UseDefaultCredentials = false; arriba de la smtp.Credentials assignment .

En mi caso, estaba usando el constructor MailMessage que toma dos cadenas (hacia, desde) y obtengo el mismo error. Cuando utilicé el constructor predeterminado y luego agregué un objeto MailAddress a la propiedad To del MailMessage, funcionó bien.


En mi caso, la autenticación de 2 factores se activó para la cuenta FROM en Office 365. Una vez que se apagó, el correo electrónico se envió correctamente.


Esta es una pregunta antigua, pero dado que este es el primer resultado en Google para este error, pensé que actualizaría mi progreso en este problema.

También pasé muchas horas sobre este tema. Al final tuve que cambiar la contraseña de mi cuenta de Office 365 varias veces hasta que mi código logró enviar correos electrónicos.

No tuve que hacer ningún cambio en el código.


Establezca las credenciales predeterminadas por el usuario en "True" smtp.UseDefaultCredentials = True;

Antes de eso, ingrese su credencial smtp.Credentials = new NetworkCredential (fromAddress, fromPassword);

Esto debería funcionar bien


Pasé demasiado tiempo en esto y la solución fue súper simple. Tuve que usar mi "MX" como el host y el puerto 25.

var sClient = new SmtpClient("domain-com.mail.protection.outlook.com"); var message = new MailMessage(); sClient.Port = 25; sClient.EnableSsl = true; sClient.Credentials = new NetworkCredential("user", "password"); sClient.UseDefaultCredentials = false; message.Body = "Test"; message.From = new MailAddress("[email protected]"); message.Subject = "Test"; message.CC.Add(new MailAddress("[email protected]")); sClient.Send(message);


Puede que no sea un buen programador, pero parece que está pasando la dirección De como "dirección de correo electrónico", que no es una dirección de correo electrónico adecuada y para Office365 debe ser una dirección real en el sistema Office365.

Puede validar eso si codifica su dirección de correo electrónico como de y su contraseña de Office 365. No lo dejes ahí, por supuesto.


Si usa Office 365, siga estos pasos:

  1. compruebe el tiempo de caducidad de la contraseña con Azure Power Shell: Get-MsolUser -All | seleccione DisplayName, LastPasswordChangeTimeStamp
  2. Cambie la contraseña usando una nueva contraseña (no la anterior). Eventualmente puede volver a la contraseña anterior, pero debe cambiarla dos veces.

¡Espero eso ayude!


Solía ​​tener el mismo problema.

Agregue el dominio resuelto.

mySmtpClient.Credentials = New System.Net.NetworkCredential("[email protected]", "password", "domain.com")