it-swarm-es.com

Error de Gmail: el servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Autenticación requerida

Estoy usando el siguiente código para enviar correo electrónico. El código funciona correctamente en mi máquina local. Pero en el servidor de producción me aparece el mensaje de error

        var fromAddress = new MailAddress("[email protected]");
        var fromPassword = "xxxxxx";
        var toAddress = new MailAddress("[email protected]");

        string subject = "subject";
        string body = "body";

        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword)

        };

        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = subject,
            Body = body
        })


        smtp.Send(message);

Y en mi A/c de Gmail recibí el siguiente correo electrónico después de ejecutar el código del servidor de producción

Hola ,

Alguien recientemente usó su contraseña para intentar iniciar sesión en su cuenta de Google [email protected] Esta persona estaba usando una aplicación como un correo electrónico, un cliente o un dispositivo móvil.

Evitamos el intento de inicio de sesión en caso de que se tratara de un secuestrador que intentaba acceder a su cuenta. Por favor revise los detalles del intento de inicio de sesión:

Viernes 3 de enero de 2014 13:56:08 en punto Dirección IP de UTC: xxx.xx.xx.xxx (abcd.net.) Ubicación: Filadelfia PA, Filadelfia, PA, EE. UU.

Si no reconoce este intento de inicio de sesión, es posible que otra persona esté intentando acceder a su cuenta. Debes iniciar sesión en tu cuenta y restablecer tu contraseña inmediatamente.

Restablecer la contraseña

Si era usted y tiene problemas para acceder a su cuenta, complete los pasos de solución de problemas que se detallan en http://support.google.com/mail?p=client_login

Atentamente, El equipo de cuentas de Google.

218
vcs

Esto generalmente ocurre cuando intenta iniciar sesión desde una zona horaria diferente o una computadora con dirección IP. Su servidor de producción y la identificación de correo que ha utilizado ambos están en una zona horaria diferente. Elija cualquiera de estas dos soluciones:

1) Inicie sesión en el servidor de producción a través del acceso remoto, e inicie sesión en Gmail una vez con sus credenciales. Solicitarán la confirmación, la confirmarán y se desconectarán.

O bien 2) inicie sesión en gmail en su computadora local, siga este Enlace y elija revisar esta actividad y tome las acciones apropiadas.

169
Arshad

Cuando intenta enviar correo desde el código y encuentra el error "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", ya que el error podría ocurrir debido a siguientes casos.

caso 1: cuando la contraseña es incorrecta

caso 2: cuando intenta iniciar sesión desde alguna aplicación

caso 3: cuando intenta iniciar sesión desde un dominio que no sea su zona horaria/dominio/computadora (Este es el caso en la mayoría de los escenarios al enviar correo desde el código)

Hay una solución para cada

solución para el caso 1: Introduzca la contraseña correcta.

solución 1 para el caso 2 : vaya a la configuración de seguridad en el siguiente enlace https://www.google.com/settings/security/lesssecureapps y habilite aplicaciones menos seguras . Para que puedas iniciar sesión desde todas las aplicaciones.

solución 2 para el caso 2 :( ver https://stackoverflow.com/a/9572958/52277 ) habilitar la autenticación de dos factores (también conocida como verificación de dos pasos) y luego generar una aplicación - Contraseña específica. Use esa contraseña recién generada para autenticarse a través de SMTP.

solución 1 para el caso 3: (Esto podría ser útil) necesita revisar la actividad. pero la revisión de la actividad no será útil debido a los últimos estándares de seguridad, el enlace no será útil. Así que trate el siguiente caso.

solución 2 para el caso 3 : si ha alojado su código en algún lugar en el servidor de producción y si tiene acceso al servidor de producción, lleve la conexión del escritorio remoto al servidor de producción e intente iniciar sesión una vez desde el navegador de El servidor de producción. Esto agregará excpetioon para iniciar sesión en google y se le permitirá iniciar sesión desde el código.

Pero qué pasa si no tiene acceso al servidor de producción.pruebe la solución 3

solución 3 para el caso 3:Debe habilitar el inicio de sesión desde otra zona horaria/ip para su cuenta de Google.

para hacer esto, siga el enlace https://g.co/allowaccess y permita el acceso haciendo clic en el botón Continuar.

Y eso es. Aqui tienes. Ahora podrá iniciar sesión desde cualquier computadora y por cualquier medio de aplicación a su cuenta de Google.

244
Roshan Parmar

Es un problema de seguridad, Gmail por defecto impide el acceso a su cuenta de correo electrónico desde aplicaciones personalizadas. Puede configurarlo para que acepte el inicio de sesión desde su aplicación.

Después de iniciar sesión en su correo electrónico, HAGA CLIC AQUÍ

Esto te llevará a la siguiente página.

 Less Secure Apps Page

95
Sayka

Después de pasar un par de horas hoy intentando todas las soluciones aquí, todavía no pude superar este error exacto. He usado gmail muchas veces de esta manera, así que sabía que era algo estúpido, pero nada de lo que solucioné el problema. Finalmente me encontré con la solución en mi caso, así que pensé que iba a compartir.

Primero, la mayoría de las respuestas anteriores también son necesarias, pero en mi caso, fue una simple cuestión de ordenar el código al crear la clase SmtpClient.

En este primer fragmento de código a continuación, observe dónde se encuentra la línea "Credenciales = creds". Esta implementación generará el error al que se hace referencia en esta pregunta, incluso si tiene todo lo demás configurado correctamente.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            Credentials = creds,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
        }

Sin embargo, si mueve la llamada del configurador de credenciales a la parte inferior, el correo electrónico se enviará sin error. No hice cambios en el código que lo rodea ... es decir ... el nombre de usuario/contraseña, etc. Claramente, ya sea el EnableSSL, UseDefaultCredentials o el DeliveryMethod depende de que las credenciales se configuren primero ... No probé Todo para averiguar cuál era sin embargo.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            Credentials = creds
        }

Espero que esto ayude a salvar a alguien más algunos dolores de cabeza en el futuro.

18
user1011627

Hola tuve el mismo problema,

lo que he hecho para resolverlo. Es activar la aplicación menos segura. después de conectarme a mi cuenta de gmail. Entré en este enlace: https://www.google.com/settings/security/lesssecureapps

Luego enciendo la aplicación segura y, y funcionó. Se ha dicho también arriba.

12
Barak Rosenfeld

Tengo un código de trabajo anterior que lanza este error ahora. No hay problema en la contraseña. Tampoco es necesario convertir el mensaje a base64. Resulta que tengo que hacer lo siguiente:

  1. Desactivar la autenticación de 2 factores
  2. Establezca "Permitir aplicaciones menos seguras" en ON
  3. Inicie sesión en su cuenta de gmail desde el servidor de producción
  4. Ir aquí también para aprobar la actividad de inicio de sesión
  5. Ejecute su aplicación en el servidor de producción

Código de trabajo

    public static void SendEmail(string emailTo, string subject, string body)
    {
        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("[email protected]", "secretpassword"),
            EnableSsl = true
        };

        client.Send("[email protected]", emailTo, subject, body);
    }

Desactivar la autenticación de 2 factores  Turning off 2-factor authentication

Establezca "Permitir aplicaciones menos seguras" en la misma página (debe desplazarse hacia abajo)  Allow less secure apps

8
Jeson Martajaya

Simplemente siga el paso en el correo electrónico de Google y habilite aplicaciones menos seguras.

8
Trung

Debe activar "Permitir aplicaciones menos seguras" desde aquí https://myaccount.google.com/lesssecureapps

6
Raj K

He enfrentado el mismo problema. Ocurre cuando se activa la verificación de 2 pasos (MFA). Simplemente apague la verificación de 2 pasos y su problema debe resolverse.

6
Anik

A continuación se encuentra mi código. También tuve el mismo error, pero el problema fue que di mi contraseña incorrectamente. El siguiente código funcionará perfectamente ... inténtelo

            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);

Puedes referirlo en mi blog

4
Ganesh Pillai N

simplemente activa la configuración de o gmail. ver abajo la imagen dada:

 enter image description here

3
Rajesh Paliwal

Lo que funcionó para mí fue activar la opción para aplicaciones menos seguras (estoy usando VB.NET)

Public Shared Sub enviaDB(ByRef body As String, ByRef file_location As String)
        Dim mail As New MailMessage()
        Dim SmtpServer As New SmtpClient("smtp.gmail.com")
        mail.From = New MailAddress("[email protected]")
        mail.[To].Add("[email protected]")
        mail.Subject = "subject"
        mail.Body = body
        Dim attachment As System.Net.Mail.Attachment
        attachment = New System.Net.Mail.Attachment(file_location)
        mail.Attachments.Add(attachment)
        SmtpServer.Port = 587
        SmtpServer.Credentials = New System.Net.NetworkCredential("user", "password")
        SmtpServer.EnableSsl = True
        SmtpServer.Send(mail)
    End Sub

Así que inicie sesión en su cuenta y luego vaya a google.com/settings/security/lesssecureapps

2
Edgar

Tuve el mismo problema para una aplicación implementada en Microsoft Azure.

SmtpException: 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.

Primero, aprobé todos los dispositivos desconocidos (algunas direcciones IP que se originan en Irlanda) en la página siguiente (iniciada como usuario de gmail): https://security.google.com/settings/u/1/security/secureaccount

Utilicé las siguientes configuraciones para el cliente:

var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "my_password"); 

Comenzó a funcionar solo después de configurar la siguiente propiedad en el cliente smtp:

client.TargetName = "STARTTLS/smtp.gmail.com";
2
haiiaaa

Intenté todas las sugerencias que se encuentran aquí, desde habilitar aplicaciones menos seguras, hasta probar el puerto 587 ... nada funcionó. Finalmente acabo de comentar la línea UseDefaultCredentials = false. Todo funcionó si no toqué ese booleano.

1
Kris Coleman

NOVIEMBRE DE 2018, he intentado todo lo anterior sin éxito.

A continuación se muestra la solución que finalmente funcionó. Desafortunadamente no esta usando SSL, pero funciona !!!

var fromAddress = new MailAddress([email protected], "From Name");
var toAddress = new MailAddress("[email protected]", "To Name");

const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "aspmx.l.google.com",
    Port = 25,
    EnableSsl = false
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}
1
InGeek

Un comentario de Tomasz Madeyski es lo que solucionó mi problema ... él dice que existe un error en SetDefaultCredential, él dice:

"El problema es que en el configurador UseDefaultCredentials hay este código: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null;

si coloca smtpClient.UseDefaultCredentials = false después de configurar las credenciales ... esta línea configurada para anular esas credenciales ...

1
FabianSilva

Es posible que necesites crear/generar una contraseña de APP específica desde gmail. Su aplicación o script utilizará esta nueva contraseña en lugar de su contraseña habitual. Su contraseña regular seguirá funcionando bien para usted.

Eso es lo que lo hizo por mí. Todavía usé la misma cuenta de correo electrónico pero tuve que generar una nueva contraseña específica para la aplicación.

https://support.google.com/accounts/answer/185833?hl=es

 Screen shot

Básicamente, puede hacerlo aquí: https://security.google.com/settings/security/apppasswords

0
samiup

Debe no permitir que las aplicaciones menos seguras accedan a su cuenta de Google .

que hacer:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

Realmente he visto muchas ideas, la única solución fue de esta manera (funciona con diferentes proveedores de correo electrónico):

            try
        {
            ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20);
            string Host = dsProvider.Rows[y]["POP_hostOut"].ToString();
            int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString());  //587
            string[] email = von1.Split('@');
            string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0];
            string password = layer.getUserPassword(listSender.SelectedValue.ToString());
            SmtpClient client = new SmtpClient(Host, port);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            //A idea from MSDN but it not works. You got the "The server response was: 5.5.1 Authentication Required."
            //System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, Host);
            //System.Net.CredentialCache cache = new System.Net.CredentialCache();
            //cache.Add(Host, port, "NTLM", myCreds);
            ///cache.GetCredential(Host, port, "NTLM");   //NTLM
            client.Credentials = new System.Net.NetworkCredential(userName, password);
            client.Host = Host;
            client.Port = port;
            client.EnableSsl = true;
            client.Send(message);
            ViewProgressbar();
        }
        catch (SmtpException ex)...
0
Walter

Si estás utilizando gmail.

  • 1-logonea tu cuenta

    2- navegar por este enlace

    3- Permitir aplicaciones menos seguras: ON

Disfrutar....

0
Muhammad Azeem

Soy un suscriptor de Google Apps para empresas y dedico las últimas dos horas a lidiar con esto, incluso después de tener todas las configuraciones correctas (smtp, port, enableSSL, etc.). Esto es lo que funcionó para mí y los sitios web que lanzaban el error 5.5.1 al intentar enviar un correo electrónico:

  1. Inicie sesión en su admin.google.com
  2. Haga clic en SEGURIDAD <: si esto no está visible, haga clic en 'MÁS CONTROLES' y agréguelo de la lista
  3. Haga clic en Configuración básica
  4. Desplácese hasta la parte inferior del cuadro Configuración básica, haga clic en el enlace: 'Ir a la configuración para aplicaciones menos seguras'
  5. Seleccione la opción # 3: Reforzar el acceso a aplicaciones menos seguras para todos los usuarios (No recomendado)
  6. Presione GUARDAR en la parte inferior de la ventana

Después de hacer esto, mis formularios de correo electrónico del sitio web estaban trabajando de nuevo. ¡Buena suerte!

0
RichieMN

no coloque el punto de interrupción antes de esperar smtp.SendMailAsync (correo);

:)

cuando espera con un punto de interrupción que da este error cuando quito el punto de interrupción ha funcionado

0
dewelloper