web-dev-qa-db-ja.com

Google SMTPエラー:454 4.7.0ログイン試行が多すぎます。しばらくしてからもう一度お試しください

スクリプトを使用するためにGmail/Google AppsをSMTPサーバーとして使用することは可能でしたが、送信されたメールが多すぎると、エラーメッセージが表示されるようになることがわかりました。

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

通常、1〜2時間待っていれば、100通ほどメールを送信できましたが、すぐに同じエラーメッセージに再び遭遇しました。

17
AlexMax

ドメインにSPFレコードが設定されていても、ドメインに関連付けられたDKIMレコードがないことが問題であることがわかりました。 Google AppsにDKIMレコードを追加するには、以下を実行する必要があります。

  • 管理コンソールに移動します
  • 「Google Apps」をクリックします
  • 「Gmail」をクリックします
  • 「Authenticate Email」が表示されるまで下にスクロールして、それをクリックします
  • DKIMを追加するドメインを選択します
  • 使用したい接頭辞を尋ねられたら、デフォルトの「google」を使用します

次に、TXTレコードが2つの部分に分かれています。1つの部分にはドメインがあり、もう1つの部分には実際のTXTレコードがあります。DNSに移動する必要があります。サーバーのドメインの設定とこのレコードを追加します。DNSコントロールパネルでgoogle._domainkeyのドメインを追加できない場合は、ドメインをgoogle._domainkey.example.comのように完全修飾するだけです。

これが完了したら、DNSレコードが反映されるまで少し時間をおいてから、Google Apps管理パネルの[認証の開始]をクリックします。緑のチェックマークが表示されている場合は、これで完了です。SMTPサーバーを介して電子メールが再び流れ始めるはずです。

12
AlexMax

送信するメールごとに認証を行うことはできません。

プロセスの始めに:

Session session = loadSession();
Transport transport = session.getTransport("smtp");
transport.connect("[email protected]", "password");

その後、トランスポートオブジェクトを使用して、セッションを開始せずに各メールを送信します。

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

すべてのメールを送信したら、接続を閉じる必要があります。

transport.close();
4

一括メールを送信するときにSMTPを使用すると、すべてのメールでログインしてからログアウトします。そのためグーグルはあなたの接続をブロックします。私にとってうまくいったのは、SMTPKeepAliveをtrueに設定することです。

0
kushal parikh

@ victorpacheco3107からの解決策は私のために働きました、これは私が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
0
Lluís