Question

In a Java program, what is the best way of determining if an SMTP server is ready to accept and send an email?

Was it helpful?

Solution

You can use JavaMail API and try to send an email.

If you don't want to actually send the email, you can open a TCP socket to port number 25 of your mail server and send the following commands:

HELO yourdomain.com
MAIL FROM: youremail@yourdomain.com
RCPT TO: recipient@recipientdomain.com

Make sure you check all server responses after each command issued. If you don't see any errors until that point, then probably you will be able to send emails with that SMTP server.

And, as Jordan Stewart kindly appointed:

You'll also want to make sure that the HELO domain has a complementary A / PTR dns record pair, with the IP address the domain is mapped to being the IP address you're connecting from. The domain also needs at least one MX record. I.e. if the server you're connecting from is 123.45.67.89 then you'd need an A record mapping yourdomain.com to 123.45.67.89 and a PTR ("reverse DNS") record mapping 123.45.67.89 back to yourdomain.com. If any of these conditions aren't met you'll run into problems with some mail servers as checks for these things are anti-spam measures.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top