Google SMTP-Fehler: 454 4.7.0 Zu viele Anmeldeversuche. Bitte versuchen Sie es später erneut


17

Ich habe festgestellt, dass es zwar möglich war, Google Mail / Google Apps als SMTP-Server für Skripte zu verwenden, aber wenn zu viele E-Mails gesendet wurden, bekam ich Fehlermeldungen:

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

Wenn ich ein oder zwei Stunden gewartet habe, könnte ich normalerweise weitere 100 E-Mails verschicken, aber ich würde bald wieder dieselbe Fehlermeldung erhalten.

Antworten:


12

Ich stellte fest, dass das Problem darin bestand, dass wir zwar SPF-Datensätze für unsere Domains eingerichtet hatten, dieser Domain jedoch kein DKIM-Datensatz zugeordnet war. Um einen DKIM-Eintrag in Google Apps hinzuzufügen, müssen Sie folgende Schritte ausführen:

  • Gehen Sie zur Admin-Konsole
  • Klicken Sie auf "Google Apps".
  • Klicken Sie auf "Google Mail".
  • Scrollen Sie nach unten, bis Sie "E-Mail authentifizieren" sehen und klicken Sie darauf
  • Wählen Sie die Domain aus, zu der Sie DKIM hinzufügen möchten
  • Wenn Sie gefragt werden, welches Präfix Sie verwenden möchten, verwenden Sie einfach die Standardeinstellung "google".

Sie sehen dann einen TXT-Datensatz in zwei Teilen, wobei ein Teil die Domäne und der andere den tatsächlichen TXT-Datensatz enthält. Sie müssen Ihre DNS-Einstellungen auf Ihrem Server für Ihre Domain aufrufen und diesen Eintrag hinzufügen. Wenn Sie in Ihrem DNS-Kontrollfeld die Domain von nicht hinzufügen können google._domainkey, machen Sie die Domain einfach zu einer voll qualifizierten Domain google._domainkey.example.com.

Geben Sie dem DNS-Eintrag anschließend etwas Zeit für die Weitergabe und klicken Sie im Google Apps-Verwaltungsbereich auf "Authentifizierung starten". Wenn Sie ein grünes Häkchen sehen, haben Sie es getan und E-Mails sollten erneut über den SMTP-Server gesendet werden.


Was ist, wenn Sie nicht die Kontrolle über den DNS-Server haben?
Ishmael

1
Ein Lebensretter. Anscheinend überprüft Google Mail die autorisierenden Server auf den TXT-Eintrag, sodass Sie nicht auf die vollständige DNS-Übertragung warten müssen. Bei den meisten Änderungen, die heutzutage über einen DNS-Zonendateimanager vorgenommen werden, müssen Sie nicht mehr als ein paar Sekunden warten Sekunden, damit die Änderung wirksam wird.
JT Taylor

4

Sie müssen sich nicht für jede zu sendende E-Mail authentifizieren.

Zu Beginn des Prozesses:

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

Verwenden Sie anschließend das Transportobjekt, um jede E-Mail ohne Startsitzung zu senden:

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

Nachdem Sie alle E-Mails gesendet haben, sollten Sie die Verbindung schließen:

transport.close();

0

Die Lösung von @ victorpacheco3107 hat für mich funktioniert, genau das habe ich in Ruby getan:

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

Verwenden Sie SMTP, wenn Sie Massen-E-Mails senden. Melden Sie sich mit jeder einzelnen E-Mail an und dann ab. Aufgrund dessen blockiert Google Ihre Verbindung. Für mich hat es funktioniert, SMTPKeepAlive auf true zu setzen.


1
Es wurde bereits vorgeschlagen, sich nicht für jede Mail anzumelden.
RalfFriedl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.