Estou usando o seguinte código para enviar email. 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, recebi o seguinte email após executar o código do servidor de produção
Oi ,
Alguém recentemente usou sua senha para tentar fazer login na sua Conta do Google [email protected]. Essa pessoa estava usando um aplicativo como email, cliente ou dispositivo móvel.
Impedimos a tentativa de login, caso este fosse um seqüestrador tentando acessar sua conta. Revise os detalhes da tentativa de login:
Sexta-feira, 3 de janeiro de 2014 13:56:08 horas Endereço IP UTC: xxx.xx.xx.xxx (abcd.net.) Localização: Philadelphia PA, Philadelphia, PA, EUA
Se você não reconhecer esta tentativa de login, outra pessoa pode estar tentando acessar sua conta. Você deve entrar na sua conta e redefinir sua senha imediatamente.
Redefinir senha
Se esse foi você e você está tendo problemas para acessar sua conta, siga as etapas de solução de problemas listadas em http://support.google.com/mail?p=client_login
Atenciosamente, Equipe de Contas do Google
Respostas:
Isso geralmente acontece quando você tenta fazer login em um fuso horário ou computador de endereço IP diferente. O servidor de produção e o ID de email que você usou estão em um fuso horário diferente. Escolha uma destas duas soluções:
1) Faça login no servidor de produção via acesso remoto e entre no gmail uma vez com suas credenciais. Eles pedirão a confirmação, confirmarão e sairão.
Ou 2) efetue login no gmail no computador local, siga este link e escolha revisar esta atividade e tomar as ações adequadas.
fonte
Ao tentar enviar email do código e você 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", o erro pode ocorrer devido aos seguintes casos.
caso 1: quando a senha está errada
caso 2: quando você tenta fazer login em algum aplicativo
caso 3: quando você tenta fazer 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 a partir do código)
Existe uma solução para cada
solução para o caso 1: digite a senha correta.
solução 1 para o caso 2 : acesse as configurações de segurança no link a seguir https://www.google.com/settings/security/lesssecureapps e ative aplicativos menos seguros. Para que você possa fazer login em todos os aplicativos.
solução 2 para o caso 2 : (consulte https://stackoverflow.com/a/9572958/52277 ) habilite a autenticação de dois fatores (também conhecida como verificação em duas etapas) e gere uma senha específica do aplicativo. Use essa senha recém-gerada para autenticar via SMTP.
solução 1 para o caso 3: (isso pode ser útil), você precisa revisar a atividade. mas revisar a atividade não será útil, devido aos mais recentes padrões de segurança, o link não será útil. Então tente o caso abaixo.
solução 2 para o caso 3 : se você hospedou seu código em algum lugar do servidor de produção e se tiver acesso ao servidor de produção, faça a conexão da área de trabalho remota com o servidor de produção e tente efetuar o login uma vez no navegador do servidor de produção. Isso adicionará uma excitação para o login no google e você poderá fazer 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: é necessário 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 login em qualquer computador e por qualquer meio de aplicativo na sua conta do Google.
fonte
É um problema de segurança, por padrão o Gmail impede o acesso à sua conta de email a partir de aplicativos personalizados. Você pode configurá-lo para aceitar o login do seu aplicativo.
Após fazer login no seu e-mail, CLIQUE AQUI
Isso o levará à página seguinte
fonte
Depois de passar algumas horas hoje tentando todas as soluções aqui, ainda não consegui superar esse erro exato. Eu usei o gmail várias vezes dessa maneira, então sabia que era algo estúpido, mas nada que eu fiz corrigiu o problema. 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, era uma simples questão de ordenar o código durante a criação da
SmtpClient
classe.Neste primeiro trecho de código abaixo, observe onde a
Credentials = creds
linha está localizada. Esta implementação irá gerar o erro mencionado nesta pergunta, mesmo se você tiver tudo configurado corretamente.No entanto, se você mover a chamada de configuração Credentials para o final, o email será enviado sem erros. Não fiz alterações no código ao redor ... ou seja, o nome de usuário / senha, etc. Claramente, o
EnableSSL, UseDefaultCredentials, or the DeliveryMethod
depende doCredentials
primeiro conjunto ... Não testei tudo para descobrir qual era .Espero que isso ajude a salvar outras pessoas com dores de cabeça no futuro.
fonte
UseDefaultCredentials
setter existe este código:this.transport.Credentials = value ? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials : (ICredentialsByHost) null;
que substitui o settercredentials
peloCredentials
setter. Para mim, parece queSmtpClient
é o bugVocê precisa ativar "Permitir aplicativos menos seguros" aqui https://myaccount.google.com/lesssecureapps
fonte
Olá, tive o mesmo problema,
o que eu fiz para resolvê-lo. é ativar o aplicativo menos seguro. depois de me conectar à minha conta do Gmail. Entrei neste link: https://www.google.com/settings/security/lesssecureapps
Então eu ligo o aplicativo seguro e, e ele funcionou. já foi dito acima
fonte
Eu tenho um código que trabalha anteriormente que lança esse erro agora. Não há problema na senha. Também não é necessário converter a mensagem em base64. Acontece que eu preciso fazer o seguinte:
Código de trabalho
Desativando a autenticação de dois fatores
Defina "Permitir aplicativos menos seguros" para LIGADO (mesma página, é necessário rolar para baixo)
fonte
Basta seguir a etapa no email do google e ativar aplicativos menos seguros.
fonte
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 resolvido.
fonte
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 funcionará perfeitamente ... tente
Você pode consultá-lo no meu blog
fonte
basta ativar a configuração do ou gmail. veja abaixo a imagem dada:
fonte
Eu tive o mesmo problema para um aplicativo implantado no Microsoft Azure.
Primeiro, aprovei todos os dispositivos desconhecidos (alguns endereços IP originários da Irlanda) na página a seguir (conectado como usuário do gmail): https://security.google.com/settings/u/1/security/secureaccount
Eu usei as seguintes configurações para o cliente:
Ele começou a funcionar somente depois de eu definir a seguinte propriedade no cliente smtp:
fonte
O que funcionou para mim foi ativar a opção para aplicativos menos seguros (estou usando o VB.NET)
Portanto, faça login na sua conta e acesse google.com/settings/security/lesssecureapps
fonte
Um comentário de Tomasz Madeyski foi o que corrigiu meu problema ... ele diz que existe um bug no SetDefaultCredential, ele diz:
"O problema é que no setter UseDefaultCredentials existe este código: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; que substitui as credenciais definidas pelo setter de credenciais. Para mim, parece o bug do SmtpClient"
se você colocar
smtpClient.UseDefaultCredentials = false
depois de definir credenciais ... essa linha será definida como nula essas credenciais ...fonte
NOVEMBRO 2018, tentaram de tudo sem sucesso.
Abaixo está a solução que funcionou finalmente. Infelizmente não está usando SSL, mas funciona !!!
fonte
Tentei todas as sugestões encontradas aqui, desde a habilitação de aplicativos menos seguros até a porta 587 ... nada funcionou. Finalmente, apenas comentei a linha
UseDefaultCredentials = false
. Tudo funcionava se eu não tocasse aquele booleano.fonte
Eu realmente olhei para muitas idéias, a única solução era a seguinte (funciona com diferentes provedores de email):
fonte
Sou assinante do google apps for business e passo 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 para os sites que estavam lançando o erro 5.5.1 ao tentar enviar um email:
Depois de fazer isso, meus formulários de e-mail do site estavam funcionando novamente. Boa sorte!
fonte
Pode ser necessário criar / gerar uma senha de APP específica do gmail. seu aplicativo ou script usará essa nova senha em vez da sua senha normal. Sua senha regular ainda funcionará bem para você.
Foi isso que fez por mim. 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=en
Basicamente, você pode fazer isso aqui: https://security.google.com/settings/security/apppasswords
fonte
Se você estiver usando o Gmail.
1 logon na sua conta
2- procure este link
3- Permitir aplicativos menos seguros: LIGADO
Aproveitar....
fonte
Você deve proibir que aplicativos menos seguros acessem sua conta do Google .
façam:
https://myaccount.google.com/lesssecureapps
fonte
não coloque o ponto de interrupção antes de aguardar smtp.SendMailAsync (mail);
:)
quando ele aguarda com um ponto de interrupção dando esse erro quando eu removo o ponto de interrupção, ele funcionou
fonte
Usei todas as soluções acima mencionadas, mas finalmente funcionou apenas depois de ativar o Acesso IMAP a partir das configurações do Gmail Link para Ativar acesso IMAP nas configurações do gmail
Obviamente, os pontos nas outras soluções também eram necessários.
fonte
tente mudar o host, esse é o novo, eu peguei esse mozilla thunderbird
isso funciona para mim
fonte