Электронные письма SMTP, периодически отправляемые из приложения

#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 для последующей отправки, вот как выглядит пример.

  1. Убедитесь, что Exchange не отклоняет запрос. Корпорация Майкрософт может быть очень разборчива в том, что касается прямого подключения клиентов приложений. Посмотри в журналах.
  2. Убедитесь, что ваш клиент приложения электронной почты использует протокол TLS 1.2 или выше. Многие SMTP-серверы будут отклонять запросы ниже этого уровня.
  3. Exchange может настаивать на запуске списков для согласования учетных данных, поэтому проверьте, не в этом ли проблема.
  4. Убедитесь, что клиент приложения внесен в белый список в MS Exchange 365, если он отклоняет запросы.
  5. Убедитесь, что пользователь, к которому вы подключаетесь, имеет право принимать подключения от удаленных клиентов. Я часто блокирую это, чтобы предотвратить атаки паролем с использованием грубой силы.

Обычно я бы сначала проверил все это в командной строке. Получите почтовый клиент для вашей ОС, например:

 sendemail-1.56 by Brandon Zehm lt;caspian@dotconf.netgt;  

Что очень хорошо при инициировании подключения к удаленному серверу. Протестируйте с вашего почтового сервера клиента приложения и посмотрите, что произойдет.