#ssmtp
Вопрос:
Я сталкиваюсь с проблемой отправки почты по протоколу SMTP через приложение, используя кодировку, как показано ниже
SmtpClient SMTPServer = new SmtpClient("smtp.office365.com");
SMTPServer.UseDefaultCredentials = false;
SMTPServer.Credentials = new System.Net.NetworkCredential("xxx@xxx.org","xxxxx")
SMTPServer.Port = 587;
SMTPServer.EnableSsl = true;
Поэтому я использовал этот метод 2 года назад до недавнего времени, когда мы столкнулись с тем, что электронная почта не может периодически отправляться с сообщением об ошибке «Ошибка Smtp: сбой при отправке почты». Бывают случаи, когда электронные письма можно отправлять только в среднем по 12 писем в день. Кроме того, адрес электронной почты отправителя из приложения активен с правильными учетными данными, логином и паролем.
Я проверил наш сервер Windows 2008 R2 и протестировал его с отключенным брандмауэром на сервере. Проблема все еще сохраняется. И на сервере также не было обновлений исправлений.
Есть ли что-то общее с уровнем типа аутентификации? Или определенные конфликты протоколов связи? Как мне проверить дальше, чтобы определить причину? Наш брандмауэр уже разрешил отправку через порт 587.
Ответ №1:
Там может быть много проблем, которые нужно проверить. Вы говорите, что приложение отправляет электронные письма в качестве «клиента» на SMTP-сервер Exchange 365 для последующей отправки, вот как выглядит пример.
- Убедитесь, что Exchange не отклоняет запрос. Корпорация Майкрософт может быть очень разборчива в том, что касается прямого подключения клиентов приложений. Посмотри в журналах.
- Убедитесь, что ваш клиент приложения электронной почты использует протокол TLS 1.2 или выше. Многие SMTP-серверы будут отклонять запросы ниже этого уровня.
- Exchange может настаивать на запуске списков для согласования учетных данных, поэтому проверьте, не в этом ли проблема.
- Убедитесь, что клиент приложения внесен в белый список в MS Exchange 365, если он отклоняет запросы.
- Убедитесь, что пользователь, к которому вы подключаетесь, имеет право принимать подключения от удаленных клиентов. Я часто блокирую это, чтобы предотвратить атаки паролем с использованием грубой силы.
Обычно я бы сначала проверил все это в командной строке. Получите почтовый клиент для вашей ОС, например:
sendemail-1.56 by Brandon Zehm lt;caspian@dotconf.netgt;
Что очень хорошо при инициировании подключения к удаленному серверу. Протестируйте с вашего почтового сервера клиента приложения и посмотрите, что произойдет.