2012-06-14 27 views
6

は、メール送信するために私のコードです:javax.mail.MessagingException:SMTPホストに接続できませんでしたか?次

import java.util.Properties; 
import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.Message.RecipientType; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
public class SendMail { 
    public void sendMail(String m_from,String m_to,String m_subject,String m_body){ 
     try { 
      Session m_Session; 
      Message m_simpleMessage; 
      InternetAddress m_fromAddress; 
      InternetAddress m_toAddress; 
      Properties m_properties; 

      m_properties  = new Properties(); 
      m_properties.put("mail.smtp.host", "usdc2spam2.slingmedia.com"); 
      m_properties.put("mail.smtp.socketFactory.port", "465"); 
      m_properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
      m_properties.put("mail.smtp.auth", "true"); 
      m_properties.put("mail.smtp.port", "9000"); 

      m_Session=Session.getDefaultInstance(m_properties,new Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication("aaaaa","[email protected]"); // username and the password 
       } 
      }); 

      m_simpleMessage = new MimeMessage(m_Session); 
      m_fromAddress = new InternetAddress(m_from); 
      m_toAddress  = new InternetAddress(m_to); 

      m_simpleMessage.setFrom(m_fromAddress); 
      m_simpleMessage.setRecipient(RecipientType.TO, m_toAddress); 
      m_simpleMessage.setSubject(m_subject); 

      m_simpleMessage.setContent(m_body, "text/html"); 

      //m_simpleMessage.setContent(m_body,"text/plain"); 

      Transport.send(m_simpleMessage); 
     } catch (MessagingException ex) { 
      ex.printStackTrace(); 
     } 
    } 
    public static void main(String[] args) { 
     SendMail send_mail = new SendMail(); 
     String empName = "xxxxx"; 
     String title ="<b>Hi !"+empName+"</b>"; 
     send_mail.sendMail("[email protected]", "[email protected]", "Please apply for leave for the following dates", title+"<br>by<br><b>HR<b>"); 
    } 
} 

をしかし、私は、コードを実行すると、それは私に次の例外を提供します。

javax.mail.MessagingException: Could not connect to SMTP host: usdc2spam2.slingmedia.com, port: 9000; 
    nested exception is: 
    java.net.ConnectException: Connection refused: connect 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638) 
    at javax.mail.Service.connect(Service.java:317) 
    at javax.mail.Service.connect(Service.java:176) 
    at javax.mail.Service.connect(Service.java:125) 
    at javax.mail.Transport.send0(Transport.java:194) 
    at javax.mail.Transport.send(Transport.java:124) 
    at samples.SendMail.sendMail(SendMail.java:46) 
    at samples.SendMail.main(SendMail.java:55) 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(Unknown Source) 
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900) 

私がこのpingを実行すると、問題なく返信させていただきます。私は使用していますwindows 7

私はこれを解決するために手伝ってください。

+1

pingは電子メールを送信できるという証拠ではありません。 'telnet usdc2spam2.slingmedia.com 9000'を試してみてください。あるいは(Win7)に 'telnet 'がない場合は、 [putty](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) –

+1

'telnet usdc2spam2.slingmedia.com 9000'を実行するとどうなりますか?私はあなたが 'mail.smtp.port'プロパティで間違ったポートを指定しているのではないかと思います。 – beny23

答えて

4

これは私の問題を鋳造したこの2行である

m_properties.put("mail.smtp.starttls.enable", "true"); 

上記のコード行を削除し、追加した後、それがうまく働きました。

+3

はこの行が必要でない理由を説明する必要があります – SAR

+0

それは働いていましたが、私は2行以上を削除しました! – vnshetty

+0

私のために働いていない。 –

2

何があなたの問題は、スタックトレースに権利がある原因:

java.net.ConnectException: Connection refused: connect 

あなたはSMTPサーバーに接続するためのパスワードが必要なのでしょうか?正しい設定(ポート番号など)を使用していますか?プロキシやファイアウォールの背後にいますか?これらの設定を通常のメールプログラム(Thunderbirdなど)で使用してメールを送信できますか?

2

Windowsファイアウォールの受信ルールにポート9000を追加してみます。

1

この例外は通常、接続しようとしているポートでリッスンしているサービスがない場合に発生します。

puttyまたはtelnetを使用して接続してください。私はあなたが同じエラーを取得する可能性があります。

はこれらの事を確認してください:

あなたがに接続しようとしている
  • ホスト名とポート、
  • サーバーが正しくリスニング、および
  • され、接続をブロックするファイアウォールがありません。

    m_properties.put("mail.smtp.socketFactory.port", "465"); 
        m_properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
    

    と、この行を追加:

関連する問題