Ошибка «5.7.1 У клиента нет разрешения» при отправке электронной почты из кода

Итак, у меня есть очень простая программа, которая пытается отправить электронное письмо, но я продолжаю получать

Почта недоступна. Ответ сервера был: 5.7.1 У клиента нет разрешений на отправку в качестве этого отправителя.

Вот моя программа

static void Main(string[] args)
{
    SmtpClient client = new SmtpClient("Server", 25);
    client.UseDefaultCredentials = false;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.Credentials = new NetworkCredential("UserName", "Password");
    client.Send(new MailMessage("[email protected]","Recipient"));
}

Я знаю, что учетные данные работают, если я запускаю SMTP Test Tool 3.0 с теми же данными, все работает отлично.

введите здесь описание изображения

Вот несколько снимков экрана коннектора приема, настроенного для моего IP-адреса на сервере обмена.

введите здесь описание изображения

введите здесь описание изображения

У кого-нибудь есть идеи, что может вызвать эту ошибку в моем коде, но не в простом инструменте тестирования SMTP? Я где-то пропустил какой-то вариант аутентификации? Я четырежды проверил, что вся информация верна и идентична в обоих местах, и она работает в инструменте, но не в коде.


person Kevin DiTraglia    schedule 22.08.2012    source источник


Ответы (4)


Я обнаружил проблему, мне нужно было установить флажок «Принимать любого отправителя» для аутентифицированных пользователей.

введите здесь описание изображения

Дополнительная информация здесь: http://technet.microsoft.com/en-us/library/aa997170(EXCHG.140).aspx

person Kevin DiTraglia    schedule 30.08.2012
comment
Это меня полностью спасло. Благодаря тонну! Кроме того, как бы то ни было, эта возможность прекрасно работала с нашим сервером Exchange 2003. Когда мы обновились до 2010, он перестал работать. Это привело меня к этой статье. Параметр «Принимать любого отправителя» должен быть либо новым в Ex2010, либо он сбрасывал этот параметр при обновлении. - person Erik Kowalewski; 28.06.2013
comment
Благодаря тонну! Мне нужно было сделать это на Client Frontend Connector, а также на Client Proxy Connector! - person partyd; 16.07.2017

Я знаю, что эта ветка довольно старая, но у меня такая же проблема, и я долго ломал голову. В моем случае почтовый сервер не принимал «иностранного» отправителя, поэтому, например, если вы находитесь в домене @sample.com, может быть невозможно отправить почту с «[email protected]», потому что сервер отклонит это с помощью 5.7.1 ошибка. Итак, здесь важны 2 вещи: 1) Правильные учетные данные, которые будут использоваться для подключения к серверу; 2) Значение поля «От», так как ваш сервер может отклонять письма от отправителя, принадлежащего другому домену. Другими словами, если вы находитесь в домене @sample.com, попробуйте также добавить это новое MailMessage {From = "[email protected]"}.

person aleor    schedule 16.04.2015
comment
настройка адреса отправителя как того же, который отправляет учетные данные. Мне помогло. Спасибо - person Muhammedh; 30.03.2016

У меня такая же проблема. Я проверил настройки SMTP в отдельном консольном приложении, и все работало нормально. После некоторого поиска в Google я понял, что моя проблема заключалась в том, что я дважды указал адрес from, один раз в моей конфигурации:

<smtp deliveryMethod="Network" from="[email protected]">

А также в моем коде:

mail.From = new MailAddress("[email protected]");

Удаление адреса from из кода решило проблему.

person ViqMontana    schedule 06.09.2017

Я думаю, вам нужно установить для UseDefaultCredentials значение true: см. код powershell

#SMTP server name
$smtpServer = "abcd.com.au"

#Creating a Mail object
$msg = new-object Net.Mail.MailMessage

#Creating SMTP server object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.UseDefaultCredentials = $true
person rchacko    schedule 12.09.2016