1

Я разрабатываю приложение ASP.NET с использованием веб-форм, и я наткнулся на (я думаю, тривиальную) проблему отправки электронной почты с Microsoft Exchange Учетная запись сервера.Не удается отправить электронное письмо получателям за пределами локальной сети на сервере Exchange с помощью ASP.net

Я использую класс ExchangeService (с API Microsoft EWS) и функцию AutodiscoverUrl для подключения к серверу Exchange.

Это мой код:

protected void Button2_Click(object sender, EventArgs e) 
{ 
    string from = "[email protected]"; 
    string to = "[email protected]"; 

    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
    service.AutodiscoverUrl(from); 

    EmailMessage message = new EmailMessage(service); 
    message.Subject = "Email Subject"; 
    message.Body = TextBoxMessage.Text; 
    message.ToRecipients.Add(to); 
    message.Save(); 

    message.SendAndSaveCopy(); 
} 

Проблема заключается в том, что я могу только отправлять письма местных адресов электронной почты, т.е. от и до сервера Exchange (только адреса из моей компании). Отправка на «внешние» электронные письма, такие как gmail, не работает, хотя вызов SendAndSaveCopy не вызывает никаких исключений.

Следует отметить, что это работает только с моего сервера разработки внутри локальной сети компании. Если я отключусь от локальной сети, я больше не могу подключиться к серверу Exchange, и возникает исключение.

Что я делаю неправильно?

+3

Убедитесь, что сервер обмена настроен для ретрансляции с ip-адреса, на котором запущено приложение/веб-сайт. Раньше я сталкивался с этой проблемой, и это, как правило, было проблемой. – Brian

+0

Кроме того, вы можете проверить журналы сервера Exchange. –

+1

Скорее всего, это не проблема с вашим кодом, а скорее с конфигурацией сервера Exchange. Большинство магазинов с хорошими администраторами устанавливают ограничения на то, какие приложения и какие машины могут отправлять электронные письма, и может даже быть какая-то сторонняя система, блокирующая почту, когда они выходят из вашей сети. Это хорошая практика с точки зрения безопасности, поскольку она ограничивает ущерб, который может быть нанесен, если вредоносная программа действительно установлена ​​в сети и начинает пытаться отправлять электронные письма. Короче говоря, у вас, вероятно, есть проблемы из-за хорошей безопасности и нужно поговорить с администратором. – David

ответ

0

Оказалось, что мой сервер не принимает AutodiscoverUrl, и мне пришлось вручную установить учетные данные для учетной записи электронной почты с помощью service.Credentials = new WebCredentials («имя пользователя», «пароль», «домен»);

Спасибо за ваши комментарии, это действительно помогло!

 Смежные вопросы

  • Нет связанных вопросов^_^