Контекст:
Мы - небольшая компания, у которой нет Exchange Server (или кого-либо, кто бы ему выделил), но нам все еще нужно иметь / отправлять электронные письма.
Мы решили использовать Microsoft Online Services (MOS)
Цель:
У нас есть веб-сервер (Windows Server 2003 R2 с IIS 6.0), и мы развернули приложение C # ASP.Net MCV.
Веб-приложение должно отправлять электронные письма каждый раз, когда пользователь создает учетную запись.
В соответствии с документацией нам нужно использовать порт (587) и убедиться, что транспортный уровень безопасности (TLS) включен. Кроме того, используемый адрес FROM должен относиться к типу «Официальный», который используется при двойной проверке через Центр администрирования Microsoft Online
Код:
Код 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 из-за значения по умолчанию), она работает!
Если это известная проблема или у кого-то есть ответ на этот вопрос, мне было бы интересно узнать!