14

所以我有一个非常基本的程序,它试图发送电子邮件,但我不断收到

信箱不可用。服务器响应为: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 测试工具 3.0,一切都会很好。

在此处输入图像描述

这是在交换服务器上为我的 IP 设置的接收连接器的一些屏幕截图

在此处输入图像描述

在此处输入图像描述

任何人都知道什么会导致我的代码中出现此错误,但不是在简单的 SMTP 测试工具中?我是否在某处缺少某种身份验证选项?我已经四次检查了所有信息在两个地方是否正确且相同,并且它在工具中有效,但在代码中无效。

4

4 回答 4

11

我发现了问题,我需要为经过身份验证的用户选中“接受任何发件人”框。

在此处输入图像描述

更多信息在这里:http ://technet.microsoft.com/en-us/library/aa997170(EXCHG.140).aspx

于 2012-08-30T13:36:02.263 回答
4

我知道这个线程已经很老了,但我也遇到了同样的麻烦,并且已经摸不着头脑了很长时间。在我的情况下,邮件服务器不接受“外国”发件人,因此例如,如果您在@sample.com 域中,则可能无法从“user@anotherdomain.com”发送邮件,因为服务器将拒绝这个5.7.1 错误。因此,这里有两件事很重要:1)正确的凭据将用于连接到服务器;2)“发件人”字段的值,因为您的服务器可以拒绝来自属于另一个域的发件人的邮件。换句话说,如果您在 @sample.com 域中,请尝试添加这个以及 new MailMessage {From = "someaddress@sample.com"}。

于 2015-04-16T14:18:57.810 回答
0

我有同样的问题。我在一个单独的控制台应用程序中测试了 SMTP 设置,它运行良好。经过一番谷歌搜索,我意识到我的问题是我已经指定了两次发件人地址,一次在我的配置中:

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

而且在我的代码中:

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

从代码中删除发件人地址解决了该问题。

于 2017-09-06T08:15:01.650 回答
-1

我认为您必须将 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
于 2016-09-12T04:08:14.730 回答