2012-04-24 89 views
0

每當我試圖連接到smtp主機它顯示連接失敗,我的本地交換服務器上的端口25上的響應-1,但我能夠連接到gmail smtp主機從gmail發送電子郵件我使用下面的代碼。smtp連接使用javamail api失敗?

 Properties props = System.getProperties(); 
     props.put("mail.smtp.host", "localexchange.server.address"); 
     props.put("mail.from", "emailid"); 
     Session session = Session.getInstance(props, null); 

     try { 
      MimeMessage msg = new MimeMessage(session); 
      msg.setFrom(); 
      msg.setRecipients(Message.RecipientType.TO, 
           "emailid"); 
      msg.setSubject("JavaMail hello world example"); 
      msg.setSentDate(new Date()); 
      msg.setText("Hello, world!\n"); 
      Transport.send(msg); 
     } catch (MessagingException mex) { 
      System.out.println("send failed, exception: " + mex); 
     } 

回答

-1
+0

是的,我試過它們,我認爲郵件沒有被路由到我的交換服務器,但我能夠telnet到我的交換服務器成功,有沒有什麼辦法可以告訴我的程序像TTL(生存時間)爲我的郵件。 – RamIndani 2012-04-25 06:21:26

+0

我發現我連接的局域網是在不同的網絡中,交換機在不同的網絡中,兩個網絡都通過交換機連接(我的outlook工作在完全相同的交換機上) – RamIndani 2012-04-25 10:39:21

+0

如果你在同一臺機器上運行telnet,應用程序正在運行,並且telnet連接,但JavaMail不,我不知道發生了什麼。可能您的計算機上有防火牆,只允許某些應用程序連接到某些遠程計算機?如果您要與Outlook進行比較,請注意,Outlook通常使用Microsoft專有協議,而不是JavaMail使用的Internet標準協議。確保您的Exchange服務器設置爲支持這些互聯網標準協議。 – 2012-04-25 21:21:19

0

首先檢查您的SMTP服務器端口是否爲您的系統打開。

您可以通過Telnet命令檢查這個

的Windows ---開始----運行---- CMD ---型 '的Telnet(SMTP服務器IP)(PORT)' 命中進入

+0

是的,我可以遠程登錄到SMTP服務器 – RamIndani 2012-05-06 08:50:44

0

通過將mail.smtp.debug屬性設置爲true,獲取實際的SMTP會話調試文本。您可以從命令提示符讀取調試輸出或將其設置爲輸出到文件。

檢查您的驗證方法是否允許。它說AUTH它應該有允許的身份驗證選項(GSSAPI,DIGEST-MD5,PLAIN,LOGIN)。

如果它沒有得到AUTH您可能會使用錯誤的端口。通常:

  • 25 SMTP
  • 465 SSL
  • 587 TLS

如果您發佈的調試輸出,我們或許可以提供一些更多的技巧。