Erro do Google SMTP: 454 4.7.0 Muitas tentativas de login, por favor, tente novamente mais tarde

16

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.

Normalmente, se eu esperasse uma hora ou duas, poderia enviar outros 100 e-mails, mas logo voltaria a receber a mesma mensagem de erro.

    
por AlexMax 01.10.2013 / 17:44

3 respostas

11

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, você precisa fazer o seguinte:

  • Ir para o Admin Console
  • Clique em "Google Apps"
  • Clique em "Gmail"
  • Desloque-se até ver "Autenticar e-mail" e clique em
  • Selecione o domínio ao qual você deseja adicionar o DKIM
  • Quando perguntar qual prefixo você deseja usar, basta usar o padrão "google"

Você verá um registro TXT em duas partes, uma parte terá o domínio e a outra terá o registro TXT real. Você precisa entrar em suas configurações de DNS no seu servidor para o seu domínio e adicionar este registro. Se o seu painel de controle do DNS não permitir que você adicione o domínio de google._domainkey , simplesmente torne o domínio totalmente qualificado como google._domainkey.example.com .

Depois de fazer isso, dê ao registro DNS um pouco de tempo para se 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ê a fez e o e-mail deve começar a fluir pelo servidor SMTP mais uma vez.

    
por 01.10.2013 / 17:44
4

Você não deve autenticar para cada e-mail que você 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 e-mail sem iniciar a sessão:

transport.sendMessage(message, message.getAllRecipients());

Depois de enviar todos os e-mails, você deve fechar a conexão:

transport.close();
    
por 25.02.2015 / 23:13
0

solução de @ victorpacheco3107 funcionou para mim, isso que eu fiz em ruby:

settings = {
  address:        "smtp.gmail.com",
  port:           587,
  domain:         "mydomain.com",
  user_name:      "[email protected]",
  password:       "password",
  authentication: "plain"
}

smtp_conn = Net::SMTP.new(settings[:address], settings[:port])
smtp_conn.enable_starttls_auto
smtp_conn = smtp_conn.start(settings[:domain],
                            settings[:user_name],
                            settings[:password],
                            settings[:authentication])
Mail.defaults do
  delivery_method :smtp_connection, { :connection => smtp_conn }
end

# send mails..
mail = Mail.new
mail.to('...')
# more mail stuff..
mail.deliver!

# after all mails are sent, end session
smtp_conn.finish
    
por 22.04.2016 / 17:40