8

プログラムから 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("from@xxxx.com"));
    message.setRecipients(Message.RecipientType.TO,
        InternetAddress.parse(to_address));
    message.setSubject("Test Mail"); 
    message.setText("TestMail ");
    Transport.send(message)

私のメール ゲートウェイには、ポート 587 で SSL が有効な受信メール設定と TLS が有効な送信メール設定があります。Outlook でこの設定を構成でき、正常に動作しています。しかし、私のJavaプログラムでは、「接続が拒否されました」と表示されます。助けて感謝!

最後に働いた:

InstallCertプログラムを使用して証明書をインポートし、jssecacerts ファイルを生成し、そのファイルを /jre/lib/security/ パスに追加しました。ここに私の作業コードがあります

    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"); 
4

1 に答える 1

5

smtps代わりにプロトコルを使用する必要がありますsmtp

props.put("mail.transport.protocol", "smtps");
props.put("mail.smtps.starttls.enable","true");
props.put("mail.smtps.auth", "true");
props.put("mail.smtps.host", "mail.xxxx.com");
props.put("mail.smtps.port", "587");

rfc822 専用のプロトコルを設定することもできます。

props.put("mail.transport.protocol.rfc822", "smtps");
于 2012-12-12T07:24:50.870 に答える