2012-02-15 19 views

回答

6

如果你有一個Session實例的引用,你可以做到以下幾點:

Session s = //a JavaMail session I got from somewhere 
boolean isConnected = s.getTransport("smtp").isConnected(); 

如果郵件客戶端連接到適當的SMTP服務器,通常意味着它還活着。

3

從JavaMail API中,您可以嘗試發送電子郵件並查看它是否已成功發送。

從連接的角度來看,你可以只ping到它:

InetAddress host = InetAddress.getByName("mailserver"); 
    System.out.println("host.isReachable(1000) = " + host.isReachable(1000)); 
+0

好吧,您確認第一個解決方案是唯一的解決方案:服務器無需響應ping即可正常工作。 – 2012-02-15 15:38:34

+0

@ DenisR。正確的說,服務器可能會很好地忽略ICMP迴應請求。 – Icarus 2012-02-15 15:40:13

+0

這不是唯一可能的解決方案。 SMTP服務器可能會很好地忽略ICMP迴應請求,但它們不會忽略到端口25的TCP連接。 – 2012-02-16 10:54:14

相關問題