Harry
Harry

Reputation: 33

How to check if a recipient email address domain has TLS implemented?

We are trying to check if a recipient email id (domain of a given email id) has TLS implemented or not. If not implemented we cannot send the email. Is there any way in C# to check it? e.g. Following is a service where we can enter any email id and it will tell us if that email domain has TLS implemented or not. https://www.checktls.com/TestReceiver How to do this in C#? C# email client comes with the property smtpClient.EnableSsl = true; question is what will happen if at the recipient side the TLS is not implemented? Will it fail or it will go through? If it fails that's what we want. Our SMTP server has TLS implemented.

I tried STARTTLS command and EHLO from telnet. It gives 250 STARTTLS, which tells me that the destination server has TLS implemented. How to do it programmatically?

smtpClient.EnableSsl = true;

Upvotes: 0

Views: 2321

Answers (1)

jstedfast
jstedfast

Reputation: 38593

If you use a library like MailKit, you can do this:

bool supportsStartTls;

using (var client = new SmtpClient ()) {
    client.Connect ("smtp.host.com", 587, SecureSocketOptions.None);
    supportsStartTls = client.Capabilities.HasFlag (SmtpCapabilities.StartTls);
    client.Disconnect (true);
}

If you want to use MailKit to send mail, you have full control over what happens if STARTTLS is not available.

For example, if you wanted it to fail if STARTTLS is not supported, then use SecureSocketOptions.StartTls as the third argument to the Connect method.

If you want MailKit to use STARTTLS when it is available but not fail if it isn't, then use SecureSocketOptions.StartTlsWhenAvailable instead.

Upvotes: 1

Related Questions