11

mail.smtp.ssl.enableJavaMail APIを使用するときに、プロパティをtrueに設定するいくつかのサイトを読みました。私は次のようないくつかのコードを持っています:

props.put("mail.smtp.host", "exchangemail1.example.com");
props.put("mail.from", "myemail@example.com");
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, "me.at@example.com");  
    // 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();

これによりメールが送信されますが、次のようになります。

  1. トラフィックキャプチャを実行すると、暗号化されていないことがわかります
  2. debug(props.put("mail.debug", "true"))を使用すると、「isSSLfalse」が表示されます

props.put("mail.smtp.auth","true")(上記で+ユーザー/パスワードを追加してみました...)

私が間違っていることについて何か考えはありますか?

4

5 に答える 5

17

SSL を使用するには、プロトコルをSMTPからSMTPSに変更する必要があります。

trnsport = session.getTransport("smtp");

trnsport = session.getTransport("smtps");
于 2011-01-15T18:16:08.907 に答える
7

Java Docを作成します。

「smtps」プロトコルを使用して SMTP over SSL にアクセスしている場合、すべてのプロパティは「mail.smtps.*」という名前になることに注意してください。

于 2011-05-30T12:34:02.167 に答える
3

Apache commons-emailを使用することをお勧めします。最もよく使用されるプロパティ (SSL / TLS を含む) のセッターがあり、より使いやすく、JavaMail API の上にあります。

更新: commons-email コードを調べていたところ、次の行が表示されました。

properties.setProperty("mail.smtp.starttls.enable", this.tls);
properties.setProperty("mail.smtp.auth", "true");

したがって、これらのプロパティも試してみてください。

于 2010-01-11T16:21:49.040 に答える
2

これは、JavaMail のSSLNOTESドキュメントからのものです (強調を追加)。

まず、おそらく最も簡単な方法は、プロパティを設定して SSL の使用を有効にすることです。たとえば、SMTP 接続で SSL の使用を有効にするには、プロパティ「mail.smtp.ssl.enable」を「true」に設定します。

または、 SSL 対応のプロトコル名の 1 つを使用するように JavaMail を構成することもできます。非 SSL JavaMail プロトコル「imap」、「pop3」、および「smtp」に加えて、プロトコル「imaps」、「pop3s」、および「smtps」を使用して、SSL 接続を使用して対応するサービスに接続できます。

-- STARTTLS のサポート

STARTTLS サポートは、標準の「imap」および「smtp」プロトコルで利用できますが、適切なプロパティ mail.imap.starttls.enable またはmail.smtp.starttls.enableを「true」に設定して有効にする必要があります。設定すると、サーバーが STARTTLS コマンドをサポートしている場合、接続を確立した後、ログイン情報を送信する前に使用されます。

したがって、STARTTLS サポートを使用する場合、プロトコルを に設定する必要はないようですsmtps

于 2016-09-05T15:20:12.603 に答える