ti-enxame.com

Erro do Gmail: o servidor SMTP requer uma conexão segura ou o cliente não foi autenticado. A resposta do servidor foi: 5.5.1 Autenticação necessária

Eu estou usando o código a seguir para enviar e-mail. O código funciona corretamente na minha máquina local. Mas no servidor de produção estou recebendo a mensagem de erro

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

E no meu Gmail A/c eu recebi o seguinte email depois que eu corri o código do servidor de produção

Oi , 

Alguém usou sua senha recentemente para tentar fazer login na sua conta do Google [email protected] Essa pessoa estava usando um aplicativo como Como um e-mail, cliente ou dispositivo móvel. 

Evitamos a tentativa de login no caso de ser um seqüestrador tentando acessar a sua conta . Por favor, revise os detalhes da tentativa de login:

Sexta, 3 Janeiro 2014 13:56:08 horas UTC Endereço IP: xxx.xx.xx.xxx (Abcd.net.) Local: Filadélfia PA, Filadélfia, PA, EUA

Se você não reconhecer esta tentativa de login, alguém poderá estar Tentando acessar sua conta. Você deve entrar na sua conta e Redefinir sua senha imediatamente. 

Redefinir senha 

Se você e esta estiver com problemas para acessar sua conta, Conclua as etapas de solução de problemas listadas em http://support.google.com/mail?p=client_login

Atenciosamente, Equipe de Contas do Google

193
vcs

Isso geralmente acontece quando você tenta fazer o login de um fuso horário diferente ou de um computador de endereço IP. Seu servidor de produção e o ID de e-mail que você usou estão em fuso horário diferente. Escolha qualquer uma das soluções:

1) Faça login no servidor de produção por meio de acesso remoto e faça login no gmail uma vez com suas credenciais. Eles pedirão a confirmação, confiram e saem.

Ou 2) faça o login no Gmail para o seu computador local, siga este Link e escolha rever esta atividade e tomar as medidas adequadas.

162
Arshad

Quando você tenta enviar e-mails do código e encontra o erro "O servidor SMTP requer uma conexão segura ou o cliente não foi autenticado. A resposta do servidor foi: 5.5.1 Autenticação necessária", do que o erro pode ocorrer devido a seguir casos.

case 1: quando a senha está errada

case 2: quando você tenta fazer o login de algum aplicativo

caso 3: quando você tenta efetuar login a partir do domínio que não seja seu fuso horário/domínio/computador (Esse é o caso na maioria dos cenários ao enviar e-mails do código)

Existe uma solução para cada

solução para o caso 1: Digite a senha correta.

solution 1 for case 2: acesse as configurações de segurança no seguinte link https://www.google.com/settings/security/lesssecureapps e ative aplicativos menos seguros. Para que você possa fazer o login de todos os aplicativos.

solution 2 for case 2 :( consulte https://stackoverflow.com/a/9572958/52277 ) ativar a autenticação de dois fatores (também conhecida como verificação em duas etapas) e, em seguida, gerar um aplicativo específico senha. Use essa senha recém-gerada para autenticar via SMTP.

solution 1 for case 3: (Isso pode ser útil) você precisa revisar a atividade. mas a revisão da atividade não será útil devido aos padrões de segurança mais recentes, o link não será útil. Então tente o caso abaixo.

solution 2 for case 3: Se você tiver hospedado seu código em algum lugar no servidor de produção e se tiver acesso ao servidor de produção, use a conexão de desktop remoto para o servidor de produção e tente efetuar login uma vez no navegador da produção server. Isto adicionará uma excpetioon para o login no google e você poderá fazer o login a partir do código.

Mas e se você não tiver acesso ao servidor de produção. Tente a solução 3

solução 3 para o caso 3: Você precisa ativar o login de outro fuso horário/ip para sua conta do Google.

para fazer isso, siga o link https://g.co/allowaccess e permita o acesso clicando no botão continuar. 

E é isso. Aqui está. Agora você poderá fazer o login de qualquer computador e por qualquer meio de aplicativo na sua conta do Google.

235
Roshan Parmar

É um problema de segurança, o Gmail, por padrão, impede o acesso de sua conta de e-mail a partir de aplicativos personalizados. Você pode configurá-lo para aceitar o login do seu aplicativo.

Depois de entrar no seu e-mail, CLIQUE AQUI

Isso levará você para a seguinte página

Less Secure Apps Page

92
Sayka

Depois de passar algumas horas hoje tentando todas as soluções, ainda não consegui passar desse erro exato. Eu usei o gmail muitas vezes dessa forma, então eu sabia que era algo idiota, mas nada que eu fiz resolveu o problema. Eu finalmente encontrei a solução no meu caso, então pensei em compartilhar.

Primeiro, a maioria das respostas acima também é necessária, mas no meu caso, foi uma simples questão de ordenar o código durante a criação da classe SmtpClient.

Neste primeiro trecho de código abaixo, observe onde a linha "Credenciais = creds" está localizada. Essa implementação gerará o erro mencionado nesta pergunta, mesmo se você tiver tudo configurado corretamente.

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
        }

No entanto, se você mover a chamada do configurador Credentials para a parte inferior, o email será enviado sem erro. Não fiz alterações no código circundante ... ou seja, o nome de usuário/senha, etc. Claramente, o EnableSSL, o UseDefaultCredentials ou o DeliveryMethod dependem das Credenciais que estão sendo definidas primeiro ... Eu não testei tudo para descobrir qual deles era.

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 isso ajude a salvar alguém mais algumas dores de cabeça no futuro.

18
user1011627

Oi eu tive o mesmo problema, 

o que eu fiz para resolvê-lo. é ativar o aplicativo menos seguro após conectar-se à minha conta do Gmail. Eu entrei neste link: https://www.google.com/settings/security/lesssecureapps

Então eu ligo o aplicativo seguro e, e ele funcionou. Foi dito também acima

11
Barak Rosenfeld

Basta seguir o passo no e-mail do google e ativar aplicativos menos seguros. 

8
Trung

Eu tenho um código que funciona anteriormente e que lança esse erro agora. Nenhum problema na senha. Não há necessidade de converter mensagem para base64 também. Acontece que eu preciso fazer o seguinte:

  1. Desativar autenticação de dois fatores
  2. Defina "Permitir aplicativos menos seguros" como ATIVADO
  3. Faça login na sua conta do Gmail no servidor de produção
  4. Ir here também para aprovar a atividade de login
  5. Execute seu aplicativo no servidor de produção

Código de trabalho

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

Desativando a autenticação de dois fatores Turning off 2-factor authentication

Defina "Permitir aplicativos menos seguros" como LIGADO (a mesma página, precisa rolar para baixo) Allow less secure apps

7
Jeson Martajaya

Eu enfrentei o mesmo problema. Isso acontece quando você ativa a Verificação em duas etapas (MFA). Basta desativar a Verificação em duas etapas e seu problema deve ser solucionado.

6
Anik

Abaixo está o meu código.Eu também tive o mesmo erro, mas o problema foi que eu dei a minha senha errada.O código abaixo irá funcionar perfeitamente..exigir

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

Você pode se referir em meu blog

4
Ganesh Pillai N

Você precisa ativar "Permitir aplicativos menos seguros" aqui https://myaccount.google.com/lesssecureapps

3
Raj K

basta ligar a configuração de ou gmail. veja abaixo dada imagem:

enter image description here

2
Rajesh Paliwal

O que funcionou para mim foi ativar a opção para aplicativos menos seguros (estou 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

Então, faça login na sua conta e vá para google.com/settings/security/lesssecureapps

2
Edgar

Eu tive o mesmo problema para um aplicativo implantado no Microsoft Azure.

SmtpException: o servidor SMTP requer uma conexão segura ou o cliente Não foi autenticado. A resposta do servidor foi: 5.5.1 Autenticação necessária.

Primeiro, eu aprovo todos os dispositivos desconhecidos (alguns endereços IP originários da Irlanda) na página seguinte (conectado como usuário do Gmail): https://security.google.com/settings/u/1/security/secureaccount

Eu usei as seguintes configurações para o 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"); 

Ele começou a funcionar somente depois que eu configurei a seguinte propriedade no cliente smtp:

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

Eu tentei todas as sugestões encontradas aqui, de habilitar aplicativos menos seguros, para tentar porta 587 ... nada funcionou. Por fim, acabei de comentar a linha UseDefaultCredentials = false. Tudo funcionou se eu não tocasse aquele booleano. 

1
Kris Coleman

Um comentário de Tomasz Madeyski é o que consertou meu problema ... ele diz que existe um bug no SetDefaultCredential, ele diz: 

"O problema é que no set set UseDefaultCredentials existe esse código: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; que substitui as credenciais definidas pelo setter Credentials. Para mim, parece o bug do SmtpClient"

se você colocar smtpClient.UseDefaultCredentials = false depois de definir credenciais ... essa linha será definida como nula dessas credenciais ...

1
FabianSilva

Você pode precisar criar/gerar uma senha de APP específica no gmail. Seu aplicativo ou script usará essa nova senha em vez da sua senha normal. Sua senha regular ainda funcionará bem para você.

Isso é o que fez para mim. Eu ainda usei a mesma conta de e-mail, mas tive que gerar uma nova senha específica do aplicativo.

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

Screen shot

Basicamente você pode fazer isso aqui: Https://security.google.com/settings/security/apppasswords

0
samiup

NOVEMBRO DE 2018, tentei tudo acima sem sucesso.

Abaixo está a solução que funcionou finalmente. Infelizmente não está usando SSL, mas 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);
}
0
InGeek

Você deve não permitir aplicativos menos seguros para acessar sua conta do Google.

façam:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

Eu realmente olhei para muitas ideias, a única solução era essa (funciona com diferentes provedores de e-mail):

            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

Se você está usando o Gmail.

  • 1-login para sua conta 

    2- navegue por este link

    3- Permitir aplicativos menos seguros: ON

Apreciar....

0
Muhammad Azeem

Sou um usuário do Google Apps for Business e gasto as últimas duas horas apenas lidando com isso, mesmo depois de ter todas as configurações corretas (smtp, port, enableSSL, etc). Aqui está o que funcionou para mim e os sites que estavam jogando o erro 5.5.1 ao tentar enviar um email:

  1. Faça login no seu admin.google.com
  2. Clique em SEGURANÇA <- se não estiver visível, clique em 'MAIS CONTROLES' e adicione-o na lista.
  3. Clique em Configurações Básicas
  4. Role até a parte inferior da caixa Configurações básicas e clique no link: "Ir para configurações de aplicativos menos seguros"
  5. Selecione a opção nº 3: garanta o acesso a aplicativos menos seguros para todos os usuários (não recomendado)
  6. Pressione SAVE na parte inferior da janela

Depois de fazer isso, meus formulários de e-mail do site estavam funcionando novamente. Boa sorte!

0
RichieMN

não coloque ponto de interrupção antes de esperar smtp.SendMailAsync (mail);

:) 

quando aguarda com um ponto de quebra dando este erro quando eu remover o ponto de quebra que funcionou

0
dewelloper