JavaMail APIを使用するときに、プロパティ_mail.smtp.ssl.enable
_をtrueに設定するいくつかのサイトを読みました。私は次のようないくつかのコードを持っています:
_props.put("mail.smtp.Host", "exchangemail1.example.com");
props.put("mail.from", "[email protected]");
props.put("mail.smtp.starttls.enable", "true");
// I tried this by itself and also together with ssl.enable)
props.put("mail.smtp.ssl.enable", "true");
Session session = Session.getInstance(props, null);
MimeMessage msg = new MimeMessage(session);
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO, "[email protected]");
// also tried @gmail.com
msg.setSubject("JavaMail ssl test");
msg.setSentDate(new Date());
msg.setText("Hello, world!\n");
props.put("mail.smtp.auth", "false");
Transport trnsport;
trnsport = session.getTransport("smtp");
trnsport.connect();
msg.saveChanges();
trnsport.sendMessage(msg, msg.getAllRecipients());
trnsport.close();
_
これによりメールが送信されますが、次のようになります。
props.put("mail.debug", "true")
)を使用すると、「isSSLfalse」が表示されます(上記でprops.put("mail.smtp.auth","true")
+ user/password ....を追加してみました。)
私が間違っていることについて何か考えはありますか?
SSLを使用するには、プロトコルを [〜#〜] smtp [〜#〜] から [〜#〜] smtps [〜#〜] に変更する必要があります。
trnsport = session.getTransport("smtp");
に
trnsport = session.getTransport("smtps");
フォーム Java Doc :
「smtps」プロトコルを使用してSMTPover SSLにアクセスしている場合、すべてのプロパティの名前は「mail.smtps。*」になることに注意してください。
試してみてください
props.put("mail.smtp.auth", "true");
props.setProperty("mail.smtp.**ssl.enable", "true");
props.setProperty("mail.smtp.**ssl.required", "true");
Apacheを使用することをお勧めします commons-email 。最もよく使用されるプロパティ(SSL/TLSを含む)のセッターがあり、使いやすく、JavaMailAPIの上にあります。
更新:私はcommons-emailコードを見ていて、次の行を見ました:
properties.setProperty("mail.smtp.starttls.enable", this.tls);
properties.setProperty("mail.smtp.auth", "true");
したがって、これらのプロパティも試してみてください。
これは [〜#〜] sslnotes [〜#〜] JavaMailのドキュメントからのものです(強調を追加):
まず、おそらく最も簡単なのは、SSLの使用を有効にするプロパティを設定することです。たとえば、SMTP接続でSSLの使用を有効にするには、プロパティ "mail.smtp.ssl.enable"を "true"に設定します。
または、SSL対応プロトコル名のいずれかを使用するようにJavaMailを構成することもできます。非SSLJavaMailプロトコル「imap」、「pop3」、および「smtp」に加えて、プロトコル「imaps」、「pop3s」、および「smtps」SSL接続を使用して対応するサービスに接続するために使用できます。
-STARTTLSサポート
STARTTLSサポートは、標準の「imap」および「smtp」プロトコルで使用できますが、適切なプロパティmail.imap.starttls.enableまたはmail.smtp.starttlsを設定して有効にする必要があります。 enable、「true」に。設定すると、サーバーがSTARTTLSコマンドをサポートしている場合、接続を確立した後、ログイン情報を送信する前に使用されます。
したがって、STARTTLSサポートを使用する場合、プロトコルをsmtps
に設定する必要はないようです。