Я знаю, что этот вопрос задавался несколько раз, но моя ситуация совершенно иная.У меня есть проект веб-API, в котором есть метод действия, используемый для отправки электронных писем пользователям для подтверждения их регистрации.Код работает хорошо на моей локальной машине и на всех других локальных машинах.После первого развертывания функция отправки электронной почты работала нормально, но когда-нибудь она внезапно перестала работать. В коде нет исключений после присоединения кода Web API к производственному серверу IIS, в файлах журналов исключений не обнаружено, и все выглядит хорошо.Я дважды проверил, что функция SMTP включена на производственном сервере.
Дальнейшее устранение неполадок:
- Я отключил брандмауэр (безуспешно).
- В попытке изолировать проблему я создал простую консоль на C #приложение, которое отправляет фиктивную почту, используя те же конфигурации, но безуспешно (локально, но безуспешно, на рабочем сервере).
- Я попробовал предложенные решения здесь но безуспешно.
Вот пример кода, который я использую:
MailMessage mail = new MailMessage();
mail.From = new System.Net.Mail.MailAddress(fromMail);
// The important part -- configuring the SMTP client
SmtpClient smtp = new SmtpClient();
smtp.Port = 587; // [1] You can try with 465 also, I always used 587 and got success
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; // [2] Added this
smtp.UseDefaultCredentials = false; // [3] Changed this
smtp.Credentials = new NetworkCredential(fromMail, fromPassword); // [4] Added this. Note, first parameter is NOT string.
smtp.Host = SMTPServer;
//recipient address
mail.To.Add(new MailAddress(toMail));
//Formatted mail body
mail.IsBodyHtml = true;
mail.Body = body;
mail.Subject = subject;
smtp.Send(mail);
return true;
Я использую smtp.office365.com в качестве клиента SMTP-сервера.
У меня последний вопрос:
Ограничивает ли System.Net.Mail количество отправляемых писем в день / месяц / год?или есть ли шанс, что сервер был заблокирован от отправки электронной почты?