Czy istnieje sposób, w jaki interfejs API JavaMail umożliwia sprawdzenie, czy używany serwer pocztowy jest żywy? Jeśli nie, jak to zrobić z kodem Java?Jak przetestować serwer pocztowy przy użyciu Java?
Dziękuję z góry za pomoc.
Czy istnieje sposób, w jaki interfejs API JavaMail umożliwia sprawdzenie, czy używany serwer pocztowy jest żywy? Jeśli nie, jak to zrobić z kodem Java?Jak przetestować serwer pocztowy przy użyciu Java?
Dziękuję z góry za pomoc.
Jeśli masz odwołanie do instancji Session, można wykonać następujące czynności:
Session s = //a JavaMail session I got from somewhere
boolean isConnected = s.getTransport("smtp").isConnected();
Jeśli poczta klient jest podłączony do odpowiedniego serwera SMTP, zazwyczaj oznacza, że jest żywy.
Z interfejsu API JavaMail można spróbować wysłać wiadomość e-mail i sprawdzić, czy została wysłana pomyślnie.
Z punktu widzenia łączności, może po prostu ping go:
InetAddress host = InetAddress.getByName("mailserver");
System.out.println("host.isReachable(1000) = " + host.isReachable(1000));
Ok, więc potwierdzasz, że pierwsze rozwiązanie jest jedyne: serwer nie musi odpowiadać, aby ping działał poprawnie. –
@DisisR. Prawidłowo, serwer może bardzo dobrze ignorować żądania echa ICMP. – Icarus
To naprawdę nie jest jedyne możliwe rozwiązanie. Serwery SMTP mogą bardzo dobrze ignorować żądania echa ICMP, ale nie ignorują połączeń TCP do portu 25. –
Zdefiniuj stan "serwer poczty jest żywy". – pingw33n