Erreur Google SMTP: 454 4.7.0 Trop de tentatives de connexion, veuillez réessayer plus tard


17

J'ai découvert que même s'il était possible d'utiliser Gmail / Google Apps comme serveur SMTP pour une utilisation par script, si trop d'e-mails étaient envoyés, j'ai commencé à recevoir des messages d'erreur:

SMTP Error: 454 4.7.0 Too many login attempts, please try again later.

Habituellement, si j'attendais une heure ou deux, je pouvais envoyer encore 100 e-mails, mais je retrouverais bientôt le même message d'erreur.

Réponses:


12

J'ai découvert que le problème était que, bien que nous ayons configuré des enregistrements SPF pour nos domaines, nous n'avions pas d'enregistrement DKIM associé à notre domaine. Pour ajouter un enregistrement DKIM dans Google Apps, vous devez procéder comme suit:

  • Accédez à la console d'administration
  • Cliquez sur "Google Apps"
  • Cliquez sur "Gmail"
  • Faites défiler la liste jusqu'à ce que vous voyiez "Authentifier l'e-mail" et cliquez dessus
  • Sélectionnez le domaine auquel vous souhaitez ajouter DKIM
  • Lorsqu'il vous demande quel préfixe vous souhaitez utiliser, utilisez simplement la valeur par défaut "google"

Vous verrez alors un enregistrement TXT en deux parties, une pièce a le domaine et l'autre a l'enregistrement TXT réel. Vous devez entrer dans vos paramètres DNS sur votre serveur pour votre domaine et ajouter cet enregistrement. Si votre panneau de contrôle DNS ne vous permet pas d'ajouter le domaine de google._domainkey, rendez simplement le domaine complet comme google._domainkey.example.com.

Après cela, donnez un peu de temps à l'enregistrement DNS pour se propager, puis cliquez sur "Démarrer l'authentification" dans le panneau d'administration de Google Apps. Si vous voyez une coche verte, vous l'avez fait, et le courrier électronique devrait recommencer à circuler via le serveur SMTP.


Et si vous ne contrôlez pas le serveur DNS?
Ishmael

1
Une bouée de sauvetage. Il semble que gmail vérifie l'enregistrement TXT sur les serveurs faisant autorité, de sorte que vous ne devriez pas avoir à attendre la pleine propagation DNS - pour la plupart des modifications apportées ces jours-ci via un gestionnaire de fichiers de zone DNS, vous n'aurez pas à attendre plus de quelques secondes pour que le changement prenne effet.
JT Taylor

4

Vous ne devez pas vous authentifier pour chaque e-mail que vous devez envoyer.

Au début du processus:

Session session = loadSession();
Transport transport = session.getTransport("smtp");
transport.connect("example@gmail.com", "password");

Après, utilisez l'objet de transport pour envoyer chaque courrier sans démarrer la session:

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

Après avoir envoyé tous les e-mails, vous devez fermer la connexion:

transport.close();

0

la solution de @ victorpacheco3107 a fonctionné pour moi, c'est ce que j'ai fait en rubis:

settings = {
  address:        "smtp.gmail.com",
  port:           587,
  domain:         "mydomain.com",
  user_name:      "user@mydomain.com",
  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

0

En utilisant SMTP lorsque vous envoyez des e-mails en masse, connectez-vous à chaque e-mail, puis déconnectez-vous. À cause de cela, Google bloque votre connexion. Ce qui a fonctionné pour moi, c'est de définir SMTPKeepAlive sur true.


1
Il a déjà été suggéré de ne pas se connecter pour chaque mail.
RalfFriedl
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.