Erro SMTP do Google: 454 4.7.0 Muitas tentativas de login, tente novamente mais tarde
17
Descobri que, embora fosse possível usar o Gmail / Google Apps como um servidor SMTP para uso com script, se muitos e-mails fossem enviados, comecei a receber mensagens de erro:
SMTP Error: 454 4.7.0 Too many login attempts, please try again later.
Geralmente, se eu esperasse uma ou duas horas, poderia enviar outros 100 e-mails, mas em breve encontraria a mesma mensagem de erro novamente.
Descobri que o problema era que, embora tivéssemos registros SPF configurados para nossos domínios, não tínhamos um registro DKIM associado ao nosso domínio. Para adicionar um registro DKIM no Google Apps, faça o seguinte:
Vá para o Admin Console
Clique em "Google Apps"
Clique em "Gmail"
Role para baixo até ver "Autenticar email" e clique nesse
Selecione o domínio ao qual você deseja adicionar o DKIM
Quando perguntar qual prefixo você deseja usar, basta usar o padrão de 'google'
Você verá um registro TXT em duas partes, uma parte tem o domínio e a outra o registro TXT real. Você precisa acessar as configurações de DNS no servidor do seu domínio e adicionar esse registro. Se o seu painel de controle DNS não permitir a adição do domínio google._domainkey, simplesmente torne o domínio totalmente qualificado google._domainkey.example.com.
Depois de fazer isso, aguarde um pouco o registro do DNS para propagar e clique em "Iniciar autenticação" no painel de administração do Google Apps. Se você vir uma marca de seleção verde, você o fez e o e-mail deve começar a fluir novamente pelo servidor SMTP.
E se você não estiver no controle do servidor DNS?
Ishmael
1
Um salva-vidas. Parece que o gmail verificará os servidores autoritativos quanto ao registro TXT; portanto, você não precisa esperar pela propagação completa do DNS - para a maioria das alterações feitas atualmente por meio de um gerenciador de arquivos da zona DNS, você não precisará esperar mais do que algumas vezes. segundos para que a alteração entre em vigor.
JT Taylor #
4
Você não deve se autenticar para cada email que deve enviar.
No início do processo:
Session session = loadSession();
Transport transport = session.getTransport("smtp");
transport.connect("[email protected]", "password");
Depois, use o objeto de transporte para enviar cada email sem iniciar a sessão:
Usando o SMTP quando você envia um email em massa, faça login com todos os emails e faça logout. Por isso, o Google bloqueia sua conexão. O que funcionou para mim é definir o SMTPKeepAlive como true.
Você não deve se autenticar para cada email que deve enviar.
No início do processo:
Depois, use o objeto de transporte para enviar cada email sem iniciar a sessão:
Depois de enviar todos os emails, feche a conexão:
fonte
solução de @ victorpacheco3107 funcionou para mim, isso que eu fiz em ruby:
fonte
Usando o SMTP quando você envia um email em massa, faça login com todos os emails e faça logout. Por isso, o Google bloqueia sua conexão. O que funcionou para mim é definir o SMTPKeepAlive como true.
fonte