問題:
JavaMail を使用して EC2 Ubuntu 12.04 サーバーから電子メールを送信しようとしていますが、機能していません。
バックグラウンド:
Tomcat サーバーから自動生成されたメールを少数のチーム メンバーに送信するつもりです。私はこのタスクに JavaMail 1.4.7 を使用しましたが、Tomcat のローカル インストール (個人のラップトップ) で試してみることに成功しました。
次のステップでは、このモジュールを EC2 サーバーに配置しましたが、以下のエラーで失敗し始めました。
エラー:
DEBUG SMTP: AUTH LOGIN に失敗しました javax.mail.AuthenticationFailedException: 535-5.7.1 ユーザー名とパスワードが受け入れられません。詳細については、535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 j13sm1603739pat.17 - gsmtpをご覧ください。
at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
コードスニペット:
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Properties props = new Properties();
props.put("mail.smtps.host","smtp.gmail.com");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtps.auth", "true");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.port", 465);
props.put("mail.smtp.socketFactory.port", 465);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
props.put("mail.smtp.ssl.enable", true);
Session session = Session.getDefaultInstance(props);
session.setDebug(debug);
Message msg = new MimeMessage(session);
InternetAddress addressFrom = new InternetAddress("fromId@gmail.com");
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
msg.setSubject("test subject");
msg.setContent("test message", "text/plain");
Transport tp = session.getTransport("smtp");
tp.connect(SMTP_HOST_NAME, "dummyId@gmail.com", "dummypassword");
tp.sendMessage(msg, addressTo);
tp.close();
追加情報:
- EC2 インスタンスのすべてのポートにアクセス許可を追加しました。また、ポート 465 (SMTPS) と 25 (SMTP) の明示的なアクセス許可を追加しました。
- コードで提供されているユーザー名とパスワードの正確性をクロスチェックしました。