Отправка электронной почты с использованием Smtp.mail.microsoftonline.com

Контекст:

Мы небольшая компания, у которой нет 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 из-за значения по умолчанию), она работает!

Если это известная проблема или если у кого-нибудь есть на это ответ, мне было бы интересно узнать!

11
задан Kiquenet 9 May 2018 в 08:36
поделиться