Как отправлять электронные письма за пределы моего домена с помощью Exchange 2007 и С#

Я могу отправлять электронные письма с использованием типичного кода SMTP C# через Exchange 2007, если адреса отправителя и получателя находятся в пределах моего домена.

Как только я пытаюсь отправить электронные письма за пределы домена, я получаю:

Сведения об исключении: System.Net.Mail.SmtpFailedRecipientException: почтовый ящик недоступен. Ответ сервера был: 5.7.1 Невозможно ретранслировать

Как я могу заставить обмен принимать мою электронную почту и отправлять ее в Интернет?


person jmcd    schedule 14.01.2009    source источник


Ответы (4)


Попробуйте № 2... Как насчет использования Изменить папку раскладки вместо этого? Это более быстрый способ отправки электронной почты через Exchange, поскольку он просто создает электронную почту и помещает ее в папку, не дожидаясь подключения к серверу или ожидания ответа. Кроме того, я думаю, что это пропускает всю проблему с реле.

Настройте свой SmtpClient следующим образом:

SmtpClient srv = new SmtpClient("exchsrv2007", 25) {
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = "\\exchsrv2007\PickupFolder"
}
...
person DavGarcia    schedule 14.01.2009
comment
Не по умолчанию сетевой путь должен быть общим, а процессу ASP.NET, запущенному как (или олицетворению), потребуются разрешения для доступа к каталогу. - person DavGarcia; 14.01.2009
comment
+1 за такое решение для экономии времени. Отлично решает мою проблему. - person Mozy; 04.08.2009

Авторизуйтесь на сервере обмена.

http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.credentials.aspx


DefaultNetworkCredentials возвращает пустые строки для имени пользователя и т. д. и вызывает это исключение...

Вот пример, а вот еще одна отправка аутентифицированного сообщения с помощью System.Net.Mail.

person Zoredache    schedule 14.01.2009
comment
DefaultNetworkCredentials возвращает пустые строки для имени пользователя и т. д. и вызывает это исключение: Почтовый ящик недоступен. Ответ сервера был: 5.7.1 У клиента нет разрешений на отправку в качестве этого отправителя. - person jmcd; 14.01.2009
comment
+1 client.Credentials = CredentialCache.DefaultNetworkCredentials; решил мою проблему с ретрансляцией. Реле нормально с этим. - person Chris Snowden; 13.07.2011

Вам нужно будет попросить администратора биржи настроить биржу, чтобы разрешить отправку за пределы домена. По моему опыту, они неохотно делают это из-за проблем со спамом.

Если это «для ограниченного использования», вы можете настроить правила на стороне сервера в обмен на пересылку сообщений, соответствующих определенным критериям, за пределы домена. Возможно, вы сможете использовать VBA и для этого, но я не уверен.

person AlexCuse    schedule 14.01.2009
comment
+1 Обычно более крупные корпорации имеют несколько серверов обмена, и по крайней мере одному из них разрешено пересылать электронную почту за пределы домена. - person scottm; 14.01.2009
comment
Можете ли вы сказать, что большая часть моего опыта работы с Exchange связана с небольшими компаниями :D - person AlexCuse; 15.01.2009

Настроили ли вы сервер обмена на разрешить ретрансляцию с вашего веб-сервера? У меня была такая же проблема при переходе на Exchange 2007.

person DavGarcia    schedule 14.01.2009
comment
Я следовал этой статье, и это не имело никакого значения :( - person jmcd; 14.01.2009