Отправка электронной почты Sparkpost smtp с помощью c #

Я просмотрел многочисленные ответы на вопросы о переполнении стека и в других местах, и я до сих пор не могу найти хороший пример того, как:

в C #: Успешная отправка электронной почты через Sparkpost SMTP после того, как был введен STARTTLS. Документация в Sparkpost (https://www.sparkpost.com/docs/getting-started/getting-started-sparkpost/, поиск starttls) относится к следующим настройкам:

Хост SMTP: smtp.sparkpostmail.com Порт: 587 или 2525 Шифрование: STARTTLS Имя пользователя: SMTP_Injection Пароль:

В моих текущих приложениях в web.config я настраиваю smtp sparkpost следующим образом:

        <network host="smtp.sparkpostmail.com" port="587" userName="SMTP_Injection" password="..." enableSsl="true" />

Это нормально работало до начала июля. А потом TLS 1.0 больше не поддерживался. Итак, я бы хотел, чтобы наша электронная почта снова работала

Но как в игру вступает STARTTLS?


person Guttorm    schedule 01.08.2018    source источник
comment
Но как в игру вступает STARTTLS? - это команда SMTP, которая запускает согласование TLS. Это, AFAICS, не влияет на согласованную версию - это до версий, которые вы включили в Windows.   -  person Rup    schedule 01.08.2018
comment
да. Я знаю, что это видно из документации. Но как мне решить эту проблему в коде. Я не могу найти решение этой проблемы. И поэтому я разместил этот запрос. Я, конечно, хочу использовать версию 1.1. или новее.   -  person Guttorm    schedule 06.08.2018
comment
В идеале я хотел бы добавить команду STARTTLS в web.config. Какие-нибудь подсказки? Или это решается другими способами? Код?   -  person Guttorm    schedule 06.08.2018
comment
Думаю, у вас уже есть? Вы показали нам <network enableSsl="true">. Вот документация по этому поводу: в этом режиме сеанс SMTP начинается на незашифрованном канале, затем клиент отправляет серверу команду STARTTLS для переключения на безопасную связь с использованием SSL.   -  person Rup    schedule 06.08.2018
comment
Я думаю, вам нужно настроить версии TLS, которые .NET будет согласовывать. Вот несколько старых вопросов по этому поводу: stackoverflow.com/q/45382254/243245 stackoverflow.com/q/28286086/243245   -  person Rup    schedule 06.08.2018
comment
Руп. Я уже читал URL-адрес, который вы добавили 8 минут назад. Я думаю, ключ к разгадке состоит в том, чтобы принудительно активировать TLS 1.1 или новее. И я не могу понять, как это сделать.   -  person Guttorm    schedule 06.08.2018
comment
В вашей последней ссылке правильный ответ указан в самом низу. Поместите код System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; в Application_Start Global.asax.cs   -  person Guttorm    schedule 06.08.2018


Ответы (1)


Я добавил строку ServicePointManager.SecurityProtocol в свой код smtp C #, и все снова заработало. Надеюсь это поможет.

SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.sparkpostmail.com";
smtp.Port =  587; // 2525
smtp.EnableSsl = true;
//NOTE THE LINE BELOW
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
smtp.Credentials = new NetworkCredential("SMTP_Injection", "YOURKEY");
person APOUGHER    schedule 06.08.2018