Контекст:
Мы небольшая компания, у которой нет Exchange Server (или кого-либо, кто ему выделен), но нам все еще нужно иметь / отправлять электронные письма.
Мы решили использовать Microsoft Online Services (MOS)
Цель:
У нас есть веб-сервер (Windows Server 2003 R2 с IIS 6.0) и развернули Приложение C # ASP.Net MCV.
Веб-приложение должно отправлять электронные письма каждый раз, когда пользователь создает учетную запись.
Согласно документации нам нужно использовать порт (587) и убедиться, что транспорт Layer Security (TLS) включен. Кроме того, используемый адрес FROM должен иметь тип «Авторитетный», что происходит, когда я дважды проверяю его через Microsoft Online Administration Center
Код:
Код C #, который у меня есть, должен быть тривиальным и следующее:
SmtpClient server = new SmtpClient("Smtp.mail.microsoftonline.com");
server.Port = 587;
server.EnableSsl = true;
server.Credentials = new System.Net.NetworkCredential("xxx@domain.com", "123abc");
server.UseDefaultCredentials = false;
MailMessage mail = new MailMessage();
mail.From = new MailAddress("xxx@domain.com");
mail.To.Add("johndoe@domain.com");
mail.Subject = "test subject";
mail.Body = "this is my message body";
mail.IsBodyHtml = true;
try
{
server.Send(mail);
}
catch (Exception ex)
{
throw ex;
}
Ошибка:
Я создал простое приложение winform с приведенным выше кодом для проверки отправки электронных писем… Я протестировал приложение winform локально на своем компьютере (Windows XP) и на сервере.
В обеих попытках я продолжаю получать следующее сообщение об ошибке:
SMTP-серверу требуется безопасное соединение или клиент не был аутентифицирован. Ответ сервера был: 5.7.1 Клиент не был аутентифицирован.
После того, как я погуглил некоторое время, я все еще не нашел причину, почему ... Кроме того, большинство найденных мной ответов ссылаются на ] Консоль управления Exchange , которую мы, похоже, не имеем (или не установили), поэтому мы используем Microsoft Online Services…
Вопросы:
1) Как платный клиент MOS, я изначально понимаю, что Мне не нужно устанавливать (или иметь) консоль управления Exchange на нашем сервере ... на самом деле, это не должно иметь никакого отношения к моей задаче.
2) Я также пробовал включить TLS внутри нашего IIS 6.0 но безрезультатно…
3) Мы хватаемся за соломинку, потому что то, что мы делаем, похоже на что-то удивительно тривиальное…
4) Должны ли мы просто отказаться от идеи использования SMTP-сервера MOS и использовать другой? Например, Gmail? Если так ... тогда зачем платить ежемесячную плату за MOS?
Если у кого-нибудь есть помощь / совет, которые могут помочь мне пролить свет на это, это было бы здорово!
С уважением! Винс
Ничего себе ... Я считаю, что мы нашли виновника !!!
Комментируя эту строку кода:
//server.UseDefaultCredentials = false;
Все начало работать!
Теперь я могу отправлять электронные письма внутри и за пределы нашего домена…
Что меня больше всего озадачивает, так это то, что, согласно документации, значение этого свойства UseDefaultCredentials
по умолчанию установлено на false
Итак… когда Я вручную установил для него значение false , он не работает, но когда я комментирую строку (которая также устанавливает для нее значение false из-за значения по умолчанию), она работает!
Если это известная проблема или если у кого-нибудь есть на это ответ, мне было бы интересно узнать!