c# - habilitar - No se puede autenticar en Gmail smtp a través de MailMessage y smtpClient
smtpclient c# (11)
Esto funcionó bien para mí
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
UseDefaultCredentials = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("[email protected]", "mypassword"),
EnableSsl = true,
Timeout = 10000
};
MailMessage message = new MailMessage();
message.Body = "hello there";
message.Subject = "hi!!";
message.To.Add("[email protected]");
message.From = new MailAddress("[email protected]");
smtp.Send(message);
No puedo entender por qué mi vida no funciona.
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
UseDefaultCredentials = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),
EnableSsl = true,
Timeout = 10000
};
smtp.Send(mail);
Yo obtengo:
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.
Acabo de especificar EnableSsl en verdadero para que no sea el problema en términos de conexión segura.
Estoy ejecutando esto desde localhost. Y sí, mi nombre de usuario y contraseña que estoy ingresando a autenticación (las credenciales de mi cuenta de gmail) son correctas al 100%.
Mi problema era que el propietario del dominio para nuestra cuenta de gmail había desactivado tanto el "Acceso para aplicaciones menos seguras" como la autenticación en dos pasos. No había manera de habilitarlo, ni siquiera podía ver la configuración. Así que probé con mi cuenta personal y funcionó bien.
Muy simple solo sigue esto para la aplicación C # WPF:
private void SendByGmail(string subject, string body, string recepientEmail, string MailMsgFrom, string MailMsgPass)
{
using (MailMessage mailMessage = new MailMessage())
{
mailMessage.From = new MailAddress(MailMsgFrom);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MailAddress(recepientEmail));
mailMessage.Priority = System.Net.Mail.MailPriority.High;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
smtp.Timeout = 200000;
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = MailMsgFrom;
NetworkCred.Password = MailMsgPass;
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mailMessage);
}
}
Después de eso debería obtener como este error
smtpException {"The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at"} System.Net.Mail.SmtpException
Para resolver este problema, primero inicie sesión en su cuenta de correo electrónico en su cuenta de Google en el navegador web. Entonces solo sigue este enlace Actividad de la cuenta de Google . Entonces obtendrás dispositivos y actividad recientes por tu cuenta. Si se muestra, bloquea tu actividad actual desde tu dispositivo actual. Solo desbloquea esto. A continuación, vuelva a intentar enviar correo electrónico.
Gracias
Para mi la solución requería 2 "pasos":
- establezca
UseDefaultCredentials = false
primero, luego configure las credenciales que quiero usarCredentials = new NetworkCredential("[email protected]", "myGmailPasswordHere")
. Al establecer las credenciales primero, cuando establezcaUseDefaultCredentials = false
, la propiedad Credentials quedaránull
. - Permitir aplicaciones menos seguras en mi perfil de Google.
Parece que Gmail requiere una contraseña específica de la aplicación (no su contraseña principal).
Mire esto: http://support.google.com/mail/bin/answer.py?hl=en&answer=1173270
Tuve el mismo problema recientemente.
Sé que este es un tema antiguo, PERO ... Google ha cambiado algo en sus configuraciones de seguridad.
Luché con todas las respuestas hasta que revisé mi correo electrónico con un correo de Google que decía que "recientemente hemos bloqueado un intento de inicio de sesión en su cuenta de Google".
Eso me llevó a esta página: Seguridad de la cuenta de Google.
En la sección "Acceso para aplicaciones menos seguras", puede habilitar el acceso a su cuenta desde otros dispositivos / aplicaciones ... como su aplicación C #.
Tenga en cuenta que ya no hay una sección "específica de la aplicación".
Espero que esto ayude a alguien ... acabo de perder 30 minutos de mi vida ...
Si la información de inicio de sesión es correcta al 100%, primero debe establecer UseDefaultCredentials = false
y luego establecer las credenciales que desea usar Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere")
.
Si establece las credenciales primero, cuando establezca UseDefaultCredentials = false
esto hará que la propiedad Credentials
null
.
Esto está cableado, pero me pasó a mí.
Depure su código y verifique si la propiedad Credentials
es nula antes de llamar a smtp.Send(message);
. Si es así, entonces intente invertir el orden. Parece que lo tiene en el orden correcto, pero si es nulo, no use la inicialización en línea.
Espero eso ayude.
EDITAR: Si está usando la verificación en dos pasos, asegúrese de estar usando una contraseña específica de la aplicación
Tener una devolución de llamada de la siguiente manera. ¡Dile a System.Net
que ignore el error!
Agrega esto antes de llamar a Send()
ServicePointManager.ServerCertificateValidationCallback =
delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{ return true; };
smtp.Send(mail);
Tuve este problema antes y lo arreglé siguiendo estos pasos:
- Ir a la configuración de " Mi cuenta ".
- Haga clic en la categoría " Inicio de sesión y seguridad ".
- Desplácese hacia abajo hasta la sección " Aplicaciones y sitios conectados ".
- Desactive la opción " Permitir aplicaciones menos seguras ".
Acabo de desactivar esta opción y mi código se ejecutó correctamente.
Tuvo el mismo problema al acceder a smtp.gmail.com desde una aplicación ASP.NET que se ejecuta en el alojamiento de Amazon AWS. Resultó que mi configuración era correcta (también funcionaba bien desde otra computadora), pero gmail rechazaría mi intento de inicio de sesión, porque intento iniciar sesión desde una ubicación inusual. Me conecté a gmail a través de la interfaz web (www.gmail.com), y tuve que responder a un captcha. Después de eso funcionó.
<mailSettings>
<smtp from="[email protected]">
<network host="smtp.gmail.com" password="yourpassword" port="587" userName="username"/>
</smtp>
</mailSettings>
Editar: intente agregar esta línea smtp.Credentials = Credentials
después de esto
Credentials = new NetworkCredential("[email protected]", "myGmailPasswordHere"),