with form enviar c# smtp

c# - form - El servidor SMTP requiere una conexión segura o el cliente no fue autenticado. La respuesta del servidor fue: 5.5.1 ¿Se requiere autenticación?



send email c# sample (14)

A continuación está mi código. También tuve el mismo error, pero el problema fue que di mi contraseña incorrecta. El código siguiente funcionará perfectamente. Inténtalo

MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); mail.From = new MailAddress("[email protected]"); mail.To.Add("[email protected]"); mail.To.Add("[email protected]"); mail.Subject = "Password Recovery "; mail.Body += " <html>"; mail.Body += "<body>"; mail.Body += "<table>"; mail.Body += "<tr>"; mail.Body += "<td>User Name : </td><td> HAi </td>"; mail.Body += "</tr>"; mail.Body += "<tr>"; mail.Body += "<td>Password : </td><td>aaaaaaaaaa</td>"; mail.Body += "</tr>"; mail.Body += "</table>"; mail.Body += "</body>"; mail.Body += "</html>"; mail.IsBodyHtml = true; SmtpServer.Port = 587; SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail);

Puede referirlo en Enviar correo

Deseo enviar un correo electrónico desde mi aplicación y he escrito el siguiente código para enviar correos

MailMessage msg = new MailMessage(); msg.From = new MailAddress("mymailid"); msg.To.Add("receipientid"); msg.Subject = "test"; msg.Body = "Test Content"; msg.Priority = MailPriority.High; SmtpClient client = new SmtpClient(); client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com"); client.Host = "smtp.gmail.com"; client.Port = 587; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = true; client.UseDefaultCredentials = true; client.Send(msg);

Lo estoy ejecutando en localhost así que qué error estoy haciendo para enviarlo.

Cuando envío el botón da un error como

El servidor SMTP requiere una conexión segura o el cliente no fue autenticado. La respuesta del servidor fue: 5.5.1 Autenticación requerida.

Código en el archivo Web.config

<appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> <add key="smtpServer" value="smtp.gmail.com" /> <add key="EnableSsl" value = "true"/> <add key="smtpPort" value="587" /> <add key="smtpUser" value="[email protected]" /> <add key="smtpPass" value="mypassword" /> <add key="adminEmail" value="[email protected]" /> </appSettings> <system.net> <mailSettings> <smtp from="[email protected]"> <network host="smtp.gmail.com" password="mypassword" port="587" userName="[email protected]" enableSsl="true"/> </smtp> </mailSettings> </system.net>

¿Qué debo hacer para resolver este error y enviar un correo?



Asegúrese de configurar SmtpClient.Credentials después de llamar a SmtpClient.UseDefaultCredentials = false .

El orden es importante ya que la configuración de SmtpClient.UseDefaultCredentials = false restablecerá SmtpClient.Credentials a null.


Asegúrese de que se permita la aplicación Access less secure.

MailMessage mail = new MailMessage(); mail.From = new MailAddress("[email protected]"); mail.Sender = new MailAddress("[email protected]"); mail.To.Add("external@emailaddress"); mail.IsBodyHtml = true; mail.Subject = "Email Sent"; mail.Body = "Body content from"; SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); smtp.UseDefaultCredentials = false; smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "xx"); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.EnableSsl = true; smtp.Timeout = 30000; try { smtp.Send(mail); } catch (SmtpException e) { textBox1.Text= e.Message; }


Debería considerar especificar los datos de configuración de SMTP en el archivo de configuración y no sobrescribirlos en un código; consulte Datos de configuración de SMTP en systemnetmail.com/faq/4.1.aspx

<system.net> <mailSettings> <smtp deliveryMethod="Network" from="[email protected]"> <network defaultCredentials="false" host="smtp.example.com" port="25" userName="[email protected]" password="password"/> </smtp> </mailSettings> </system.net>


Después de activar la opción menos segura y probar otras soluciones, si aún enfrenta el mismo problema intente utilizar esta sobrecarga:

client.Credentials = new NetworkCredential("mymailid", "mypassword");

en lugar de:

client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");


Encontré el mismo problema incluso establecí "UseDefaultCredentials" en falso. Más tarde descubrí que la causa principal es que activé la "Verificación en 2 pasos" en mi cuenta. Después de que lo apagué, el problema desapareció.


He buscado y probado cosas diferentes durante horas. Para resumir, tuve que considerar los siguientes puntos:

  1. Use smtp.gmail.com lugar de smtp.google.com
  2. Usa el puerto 587
  3. Establecer client.UseDefaultCredentials = false; antes de establecer credenciales
  4. Active el https://www.google.com/settings/security/lesssecureapps
  5. Establecer client.EnableSsl = true;

Si estos pasos no ayudaron, verifique esta answer .
Tal vez, puede encontrar algo útil en estas preguntas frecuentes de System.Net.Mail también.


Intenta iniciar sesión en tu cuenta de Gmail. se bloquea si envía correos electrónicos usando SMTP de Gmail. No sé el límite de correos electrónicos que puede enviar antes de que se bloquee, pero si inicia sesión una vez, entonces funciona nuevamente desde el código. asegúrese de que su configuración de webconfig sea buena.


Primero verifica los problemas relacionados con la seguridad de Gmail. Es posible que haya habilitado la doble autenticación en gmail. También verifique su bandeja de entrada de Gmail si recibe alguna alerta de seguridad. En tales casos, verifique otra respuesta de @mjb como se muestra a continuación

A continuación se muestra lo general que siempre comprobo primero para tales problemas

client.UseDefaultCredentials = true;

configurarlo en falso

Tenga en cuenta la answer @Joe King: debe establecer client.UseDefaultCredentials antes de establecer client.Credentials


Pruébalo de esta manera, acabo de hacer algunos cambios ligeros:

MailMessage msg = new MailMessage(); msg.From = new MailAddress("[email protected]"); msg.To.Add("[email protected]"); msg.Subject = "test"; msg.Body = "Test Content"; //msg.Priority = MailPriority.High; using (SmtpClient client = new SmtpClient()) { client.EnableSsl = true; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential("[email protected]", "mypassword"); client.Host = "smtp.gmail.com"; client.Port = 587; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Send(msg); }

También muestre su archivo app.config, si tiene configuraciones de correo allí.


Si se trata de una nueva cuenta de Google, debe enviar un correo electrónico (el primero) a través de la interfaz de usuario habitual. Después de eso, puede usar su aplicación / robot para enviar mensajes.


Tengo el mismo problema.

Encontré esta solución:

Google puede bloquear los intentos de inicio de sesión de algunas aplicaciones o dispositivos que no usan los estándares de seguridad modernos. Dado que estas aplicaciones y dispositivos son más fáciles de romper, bloquearlos ayuda a mantener su cuenta más segura.

Algunos ejemplos de aplicaciones que no admiten los últimos estándares de seguridad incluyen:

  • La aplicación de correo en su iPhone o iPad con iOS 6 o inferior
  • La aplicación de correo en su teléfono Windows anterior a la versión 8.1
  • Algunos clientes de correo de escritorio como Microsoft Outlook y Mozilla Thunderbird

Por lo tanto, debe habilitar el inicio de sesión menos seguro en su cuenta de Google.

Después de iniciar sesión en la cuenta de Google, vaya a:

https://www.google.com/settings/security/lesssecureapps

En C #, puede usar el siguiente código:

using (MailMessage mail = new MailMessage()) { mail.From = new MailAddress("[email protected]"); mail.To.Add("[email protected]"); mail.Subject = "Hello World"; mail.Body = "<h1>Hello</h1>"; mail.IsBodyHtml = true; mail.Attachments.Add(new Attachment("C://file.zip")); using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)) { smtp.Credentials = new NetworkCredential("[email protected]", "password"); smtp.EnableSsl = true; smtp.Send(mail); } }

-------------------
Información compartida por Michael Freidgeim en el área de comentarios a continuación:
Respuesta similar con capturas de pantalla https://.com/a/32457468/52277


algunos servidores smtp (seguros) requieren que usted proporcione tanto el nombre de usuario como el correo electrónico, si su gmail es más probable es que sea el problema de "Inicio de sesión menos seguro" que necesita abordar, de lo contrario, puede intentar:

public static void SendEmail(string address, string subject, string message, string email, string username, string password, string smtp, int port) { var loginInfo = new NetworkCredential(username, password); var msg = new MailMessage(); var smtpClient = new SmtpClient(smtp, port); msg.From = new MailAddress(email); msg.To.Add(new MailAddress(address)); msg.Subject = subject; msg.Body = message; msg.IsBodyHtml = true; smtpClient.EnableSsl = true; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = loginInfo; smtpClient.Send(msg); }

observe que el correo electrónico y el nombre de usuario son diferentes a diferencia de algunas implementaciones que se refieren a ellos como iguales.

llamar a este método se puede hacer así:

SendEmail("[email protected]", "test", "Hi it worked!!", "from-mail", "from-username", "from-password", "smtp", 587);