Как проверить, есть ли в TLS адрес домена электронной почты получателя? - PullRequest
0 голосов
/ 01 июня 2019

Мы пытаемся проверить, реализован ли идентификатор электронной почты получателя (домен данного идентификатора электронной почты) или нет. Если не реализовано, мы не можем отправить электронное письмо. Есть ли способ в C # проверить это? например Ниже приведен сервис, в который мы можем ввести любой идентификатор электронной почты, и он сообщит нам, реализован ли в этом почтовом домене TLS. https://www.checktls.com/TestReceiver Как это сделать в C #? Клиент электронной почты C # поставляется со свойством smtpClient.EnableSsl = true; Вопрос в том, что произойдет, если на стороне получателя TLS не будет реализован? Это потерпит неудачу или это пройдет? Если не получится, мы этого хотим. На нашем SMTP-сервере реализован TLS.

Я попробовал команду STARTTLS и EHLO из telnet. Это дает 250 STARTTLS, что говорит мне, что на целевом сервере реализован TLS. Как это сделать программно?

smtpClient.EnableSsl = true;

1 Ответ

0 голосов
/ 01 июня 2019

Если вы используете библиотеку, такую ​​как MailKit , вы можете сделать это:

bool supportsStartTls;

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

Если вы хотите использовать MailKit для отправки почты, у вас есть полный контроль над тем, что происходит, если STARTTLSнедоступно.

Например, если вы хотите, чтобы он потерпел неудачу, если STARTTLS не поддерживается, используйте SecureSocketOptions.StartTls в качестве третьего аргумента для метода Connect.

Если вы хотитеMailKit для использования STARTTLS, когда он доступен, но не может выйти из строя, если он не доступен, вместо этого используйте SecureSocketOptions.StartTlsWhenAvailable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...