私のプログラムからTLS接続を介して電子メールを送信しようとしています。ここに私のコードはJava Mail over TLS
final String username = "XXXXXX";
final String password = "XXXXX";
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "mail.xxxx.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to_address));
message.setSubject("Test Mail");
message.setText("TestMail ");
Transport.send(message)
である私のメールゲートウェイは、SSLの着信メールの設定が有効になっており、TLSでの発信している私は見通しにこの設定を構成することができる午前ポート587上で有効になっており、それが正常に働いています。しかし、私のJavaプログラムでは、 "Connection Refused"と言っています。 ヘルプありがとうございました!
は最後に勤務:
を私はjssecacertsファイルを生成するためにcerticateをインポートするInstallCertプログラムを使用して、私は私の/ JRE/libに/セキュリティ/パスにファイルを追加しました。ここに私の作業コード
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "XXXXXX");
properties.put("mail.smtp.port", "465");
properties.put("mail.smtp.ssl.enable", true);
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.socketFactory.fallback", "false");
properties.put("mail.smtp.quitwait", "false");
properties.put("mail.smtp.auth", "true");
この場合、特定のサーバーから証明書をインポートするだけですか?私は同じ問題を抱えていますが、私のアプリケーションはユーザーが設定したアカウントからメールを送信する必要があります。コードはOutlook、Google、Yahooで動作しますが、smtp zimbra.xxxxxxx.net.brのアカウントではこの証明書。 –