Ошибка "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("kevin@hopethisworks.com","Recipient"));
}

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

enter image description here

вот несколько снимков экрана на прием соединитель, настроенный для моего IP-адреса на сервере exchange

enter image description here

enter image description here

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

4 ответов


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

enter image description here

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


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


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

<smtp deliveryMethod="Network" from="no.reply@somewhere.com">

, а также в мой код:

mail.From = new MailAddress("different@somewhere.com");

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


Я думаю, вам нужно установить 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