スクリプトを使用するためにGmail/Google AppsをSMTPサーバーとして使用することは可能でしたが、送信されたメールが多すぎると、エラーメッセージが表示されるようになることがわかりました。
SMTP Error: 454 4.7.0 Too many login attempts, please try again later.
通常、1〜2時間待っていれば、100通ほどメールを送信できましたが、すぐに同じエラーメッセージに再び遭遇しました。
ドメインにSPFレコードが設定されていても、ドメインに関連付けられたDKIMレコードがないことが問題であることがわかりました。 Google AppsにDKIMレコードを追加するには、以下を実行する必要があります。
次に、TXTレコードが2つの部分に分かれています。1つの部分にはドメインがあり、もう1つの部分には実際のTXTレコードがあります。DNSに移動する必要があります。サーバーのドメインの設定とこのレコードを追加します。DNSコントロールパネルでgoogle._domainkey
のドメインを追加できない場合は、ドメインをgoogle._domainkey.example.com
のように完全修飾するだけです。
これが完了したら、DNSレコードが反映されるまで少し時間をおいてから、Google Apps管理パネルの[認証の開始]をクリックします。緑のチェックマークが表示されている場合は、これで完了です。SMTPサーバーを介して電子メールが再び流れ始めるはずです。
送信するメールごとに認証を行うことはできません。
プロセスの始めに:
Session session = loadSession();
Transport transport = session.getTransport("smtp");
transport.connect("[email protected]", "password");
その後、トランスポートオブジェクトを使用して、セッションを開始せずに各メールを送信します。
transport.sendMessage(message, message.getAllRecipients());
すべてのメールを送信したら、接続を閉じる必要があります。
transport.close();
一括メールを送信するときにSMTPを使用すると、すべてのメールでログインしてからログアウトします。そのためグーグルはあなたの接続をブロックします。私にとってうまくいったのは、SMTPKeepAliveをtrueに設定することです。
@ 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