アプリケーションにいくつかの自動メール送信タスクを設定しています。アプリケーション固有の電子メールを顧客に送信して、予定などを思い出させる毎日です。Gmail の smtp の使用は、単純なメッセージ以上の生産タスクに適していますか? Apache James などの独自の smtp サーバーを実装する利点はありますか?
2 に答える
Gmail TOS では、未承諾の商用メールを禁止しています。一般に、Gmail に依存するサービスを一般に公開することはありません。いずれにせよ、Gmail はメール受信者リストを 100 に制限していると思うので、同じメッセージを 100 人以上に送信しようとするとおそらく失敗するでしょう。
通常、評判上の理由から、送信メールには独自の IP が必要です。私がフリーランスの仕事をしているほとんどのクライアントには、http://sendgrid.com/のような手頃な価格のパートナー サービスをお勧めします。また、TOS に違反したために Gmail がシャットダウンすることを心配する必要はありません。また、Gmail は到達率に関する指標を提供しないため、これらの送信に成功しているかどうかはわかりません。
大手メール マーケターで働いていたので、最近は SMTP サーバーにメッセージを送信するだけでは十分ではないと言えます。すべての主要なメール サービス プロバイダーは、バルク メールに送信者識別キーを要求するなどのことを行っています。また、メッセージを測定し、特定の時間内に送信するメッセージが多すぎる送信者にフラグを付けます。メールを SPAM フォルダーに入れずに配信したい場合は、多くの作業を行い、専用 IP を使用して専用サーバーを起動するか、その作業の一部を行うことができるベンダーを使用する必要があります。
私は@Richthofenに同意します-本番環境でgmailを使用してメールを送信することは悪い(そして非倫理的な)考えです。ここでは、Amazon SES または Sendgrid が最適なソリューションです。独自の SMTP サーバーを実行する場合は、アプリケーションとリソースを共有するため、おそらく速度が低下することに注意してください。
ただし、gmail を使用して、javamail API を使用して開発/テスト環境をテストしています。コードは次のとおりです。
public class EmailSender{
public void send(){
//javamail code
Session mailSession = createSmtpSession();
//javamail code
}
private Session createSmtpSession() {
final Properties props = new Properties();
props.setProperty ("mail.host", "smtp.gmail.com");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.port", "" + 587);
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty ("mail.transport.protocol", "smtp");
// props.setProperty("mail.debug", "true");
return Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"<gmail ID in user@domain format goes here>",
"<password goes here>");
}
});
}
}