c# - una - smtp no envia correos externos
La respuesta del servidor fue: 5.7.0 Primero debe emitir un comando STARTTLS. i16sm1806350pag.18-gsmtp (7)
" https://www.google.com/settings/security/lesssecureapps " utiliza este enlace después de iniciar sesión en tu cuenta de Gmail y haz clic en encender. Luego ejecuta tu aplicación, seguramente funcionará.
Intento enviar correos usando Gmail, y obtengo una excepción que es The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. i16sm1806350pag.18 - gsmtp
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. i16sm1806350pag.18 - gsmtp
el código que he escrito para enviar el correo es
MailMessage mail = new MailMessage();
mail.To.Add(txtEmail.Text.Trim());
mail.To.Add("[email protected]");
mail.From = new MailAddress("[email protected]");
mail.Subject = "Confirmation of Registration on Job Junction.";
string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET";
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
// smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
// smtp.Port = 587;
//Or your Smtp Email ID and Password
smtp.UseDefaultCredentials = false;
// smtp.EnableSsl = true;
smtp.Send(mail);
Por favor, dígame soluciones. No recibo ninguna solución para estas excepciones.
ENVIAR tecla lógica
string fromaddr = "[email protected]";
string toaddr = TextBox1.Text;//TO ADDRESS HERE
string password = "YOUR PASSWROD";
MailMessage msg = new MailMessage();
msg.Subject = "Username &password";
msg.From = new MailAddress(fromaddr);
msg.Body = "Message BODY";
msg.To.Add(new MailAddress(TextBox1.Text));
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = true;
NetworkCredential nc = new NetworkCredential(fromaddr,password);
smtp.Credentials = nc;
smtp.Send(msg);
-> este código funciona al 100%, si tiene un antivirus en su sistema, ese software anti virus cortafuegos Restrinja el envío de correos de nuestro sistema, de modo que deshabilite su sistema antivirus y firewall. Después de ejecutar este código ... En este código de arriba se usa el control TextBox1.Text para TOaddress
Este problema me persiguió durante la noche también. A continuación, le indicamos cómo solucionarlo:
- Establecer el host en: smtp.gmail.com
- Establezca el puerto a: 587
Este es el puerto TLS. He estado usando todos los otros puertos SMTP sin éxito. Si establece enableSsl = true
esta manera:
Dim SMTP As New SmtpClient(HOST)
SMTP.EnableSsl = True
Recorte los campos de nombre de usuario y contraseña (una buena forma de evitar errores si el usuario ingresa el correo electrónico y la contraseña al registrarse como lo hace el mío) de esta manera:
SMTP.Credentials = New System.Net.NetworkCredential(EmailFrom.Trim(), EmailFromPassword.Trim())
El uso del puerto TLS tratará su SMTP como SMTPS permitiéndole autenticarse. Inmediatamente, recibí una advertencia de Google que decía que mi correo electrónico bloqueaba una aplicación que presentaba riesgos de seguridad o estaba desactualizada. Procedí a "Activar aplicaciones menos seguras". Luego actualicé la información sobre mi número de teléfono y google me envió un código de verificación por mensaje de texto. Entré y ¡voila!
Ejecuté la aplicación nuevamente y fue exitosa. Sé que este hilo es viejo, pero revisé la red leyendo todas las excepciones que estaba lanzando y agregando MsgBoxes después de cada línea para ver qué salió mal. Aquí está mi código de trabajo modificado para la legibilidad ya que todas mis variables provienen de la base de datos MySQL:
Try
Dim MySubject As String = "Email Subject Line"
Dim MyMessageBody As String = "This is the email body."
Dim RecipientEmail As String = "[email protected]"
Dim SenderEmail As String = "[email protected]"
Dim SenderDisplayName As String = "FirstName LastName"
Dim SenderEmailPassword As String = "SenderPassword4Gmail"
Dim HOST = "smtp.gmail.com"
Dim PORT = "587" ''TLS Port
Dim mail As New MailMessage
mail.Subject = MySubject
mail.Body = MyMessageBody
mail.To.Add(RecipientEmail)
mail.From = New MailAddress(SenderEmail, SenderDisplayName)
Dim SMTP As New SmtpClient(HOST)
SMTP.EnableSsl = True
SMTP.Credentials = New System.Net.NetworkCredential(SenderEmail.Trim(), SenderEmailPassword.Trim())
SMTP.DeliveryMethod = SmtpDeliveryMethod.Network
SMTP.Port = PORT
SMTP.Send(mail)
MsgBox("Sent Message To : " & RecipientEmail, MsgBoxStyle.Information, "Sent!")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Espero que este código ayude al OP, pero también a todos los que lleguen tarde a la fiesta. Disfrutar.
Gmail requiere que uses una conexión segura. Esto puede establecerse en su web.config así:
<network host="smtp.gmail.com" enableSsl="true" ... />
O
SSL también debe habilitarse en el servidor web. Referir el siguiente enlace
Si está pasando (como yo) todos los parámetros como puerto, nombre de usuario, contraseña a través de un sistema y no está permitido modificar el código, entonces puede hacer este cambio fácil en el web.config:
<system.net>
<mailSettings>
<smtp>
<network enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
Si obtiene el error "atributo no reconocido ''enableSsl''" cuando sigue los consejos para agregar ese parámetro a su web.config. Descubrí que podía solucionar el error añadiéndolo a mi archivo de código en este formato:
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
try
{
smtp.Send(mm);
}
catch (Exception ex)
{
MsgBox("Message not emailed: " + ex.ToString());
}
Esta es la sección system.net de mi web.config:
<system.net>
<mailSettings>
<smtp from="<from_email>">
<network host="smtp.gmail.com"
port="587"
userName="<your_email>"
password="<your_app_password>" />
</smtp>
</mailSettings>
</system.net>
Paso (1): smtp.EnableSsl = true;
si no es suficiente:
Paso (2): " Acceso para aplicaciones menos seguras " debe estar habilitado para la cuenta de Gmail utilizada por NetworkCredential
usando la página de configuración de google :