2012-12-12 8 views
6

私のプログラムから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"); 
+0

この場合、特定のサーバーから証明書をインポートするだけですか?私は同じ問題を抱えていますが、私のアプリケーションはユーザーが設定したアカウントからメールを送信する必要があります。コードはOutlook、Google、Yahooで動作しますが、smtp zimbra.xxxxxxx.net.brのアカウントではこの証明書。 –

答えて

4

はあなたがまた、RFC822のためspecificlyプロトコルを設定しようとすることができる代わりに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"); 

smtpsプロトコルを使用する必要があり、これはいくつかの回

props.put("mail.transport.protocol.rfc822", "smtps"); 
を支援します
+0

私はまだこの同じ問題を試しました...今回は "localhost"、ポート25を接続しようとしています...これは私のデバッグログです.... DEBUG SMTP:ホスト "localhost"、ポート25、isSSLに接続しようとしています – Surez

+0

どのバージョンのjavamailを使用していますか? –

+0

Javaメール1.4.5 – Surez