2012-02-15 5 views

Trả lời

6

Nếu bạn đã có một tham chiếu đến một trường hợp Session, bạn có thể làm như sau:

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

Nếu thư client được kết nối với máy chủ SMTP thích hợp, nó thường có nghĩa là nó vẫn còn sống.

3

Từ API JavaMail, bạn có thể thử gửi email và xem liệu email đó có được gửi thành công hay không.

Từ một quan điểm kết nối, bạn chỉ có thể ping nó:

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

Ok, vì vậy bạn xác nhận rằng giải pháp đầu tiên là giải pháp duy nhất: máy chủ không cần trả lời ping để hoạt động chính xác. –

+0

@DenisR. Đúng, một máy chủ rất có thể bỏ qua các yêu cầu echo ICMP. – Icarus

+0

Nó không thực sự là giải pháp duy nhất có thể. Các máy chủ SMTP rất có thể bỏ qua các yêu cầu echo ICMP, nhưng chúng không bỏ qua các kết nối TCP tới cổng 25. –