2013-03-06 187 views
1

在此先感謝任何幫助。 Java郵件總是爲我工作,但現在它扔這惱人的例外:Java郵件:無法連接到SMTP主機:...,端口:...,java.net.ConnectException:操作超時

//異常:

run: 
DEBUG: setDebug: JavaMail version 1.4.6 
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] 
DEBUG SMTP: useEhlo true, useAuth true 
DEBUG SMTP: trying to connect to host "xxxxxx", port 25, isSSL false 
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: xxxxxx, port: 25; 
    nested exception is: 
    java.net.ConnectException: Operation timed out 
    at vesso.mail.TestMail.sendMail(TestMail.java:79) 
    at vesso.mail.TestMail.main(TestMail.java:26) 
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: mail.mentorlicitacao.com.br, port: 25; 
    nested exception is: 
    java.net.ConnectException: Operation timed out 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1962) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654) 
    at javax.mail.Service.connect(Service.java:295) 
    at vesso.mail.TestMail.sendMail(TestMail.java:71) 
    ... 1 more 
Caused by: java.net.ConnectException: Operation timed out 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) 
    at java.net.Socket.connect(Socket.java:579) 
    at java.net.Socket.connect(Socket.java:528) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:321) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1928) 
    ... 4 more 
Java Result: 1 
BUILD SUCCESSFUL (total time: 1 minute 19 seconds) 

我試圖用Mail.app(使用MacOS的)連接,它工作得很好。

//代碼:

final String host = "xxxx"; 
    final int port = 25; 
    final String username = "xxxx"; 
    final String password = "xxxx"; 

    Properties props = new Properties(); 

    props.put("mail.smtp.auth", "true"); 

    Session session = Session.getInstance(props, 
     new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(username, password); 
      } 
     }); 
    session.setDebug(true); 

    try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(username)); 
     message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse(username)); 
     message.setSubject("Teste"); 
     message.setText("Bla, Bla, Bla!"); 

     Transport transport = session.getTransport("smtp"); 
     transport.connect (host, port, username, password); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 


     System.out.println("Done"); 

    } catch (MessagingException e) { 
     throw new RuntimeException(e); 
    } 

謝謝!

+0

這是一個網絡拓撲問題,而不是一個編碼問題。 – EJP 2013-03-06 22:36:10

+0

謝謝,我該如何解決它?我能做什麼? – 2013-03-06 23:51:33

+0

好消息@EJP!我試過在Linux機器上的代碼,一切正常!任何想法?我在我的MacOs機器上運行最新的java發行版(1.7.0_17)。也許是一個JVM安全配置。 – 2013-03-07 00:45:35

回答

1

問題通過將端口從25更改爲587解決。我得出的結論是我的ISP阻止此端口。

謝謝大家。

相關問題