2017-02-04 9 views
1

ユーザーがボタンをクリックしたときにメールを送信しようとしています。私はもう一度同じをクリックしたときしかし、例外がJavaMailライブラリを使用してメールを送信すると、2番目のメールで例外が表示される

のようなメールの例外を発生します。SMTPホストに接続できませんでした:smtp.gmail.comポート:587

プロパティコード:

props = new Properties(); 
props.put("mail.smtp.host", "smtp.gmail.com"); 
props.put("mail.smtp.socketFactory.port", "465"); 
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
props.put("mail.smtp.auth", "true"); 
props.put("mail.smtp.port", "587"); 

メッセージコード:

session = 
    Session.getDefaultInstance(
     props, 
     new javax.mail.Authenticator() { 
     protected javax.mail.PasswordAuthentication getPasswordAuthentication() { 
      return new javax.mail.PasswordAuthentication( 
       MailIntegrationFromAddress.getText().trim(), 
       MailIntegrationFromAddressPassword.getText().trim()); // change accordingly 
    }}); 
try { 
    message.setFrom(new InternetAddress(MailIntegrationFromAddress.getText())); 
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
    message.setSubject("Subject type"); 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    messageBodyPart.setText("Message Body"); 
    Multipart multipart = new MimeMultipart(); 
    multipart.addBodyPart(messageBodyPart); 
    messageBodyPart = new MimeBodyPart(); 
    String filename = FileLocation.getText(); 
    DataSource source = new FileDataSource(filename); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(filename); 
    multipart.addBodyPart(messageBodyPart); 
    message.setContent(multipart); 
    message.saveChanges(); 
    setCursor(new Cursor(Cursor.WAIT_CURSOR)); 
    Transport.send(message); 
    setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 
    JOptionPane.showMessageDialog(null, "Mail sent Successfully... :-)"); 

メール機能が正常に動作のために最初の時間に2回目の呼び出しで失敗します。

+0

投稿もっとコードと

props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 

をしてください交換する代わりに、安全性が低いクリアチャネルの暗号化されたチャネルを介して認証を提供します。 – Aubin

+0

@Aubin、ありがとう、私はそれの完全なコードを追加しました。 –

+0

メッセージオブジェクトを再利用したようです。それは良い練習ですか?新しいメッセージをインスタンス化しようとします。 – Aubin

答えて

0

TLSは

は、

props.put("mail.smtp.starttls.enable", "true"); 
関連する問題