从代码发送电子邮件时,“5.7.1客户端没有权限”错误

时间:2012-08-22 20:44:56

标签: c# email exchange-server exchange-server-2010

所以我有这个非常基本的程序试图发送电子邮件,但我一直在

  

邮箱不可用。服务器响应是: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设置的接收连接器上的一些屏幕截图

enter image description here

enter image description here

任何人都有任何想法会在我的代码中导致此错误,但不是在简单的SMTP测试工具中?我在某处遗漏了某种身份验证选项吗?我有四重检查所有信息在两个地方都是正确和相同的,它可以在工具中使用,但不在代码中。

4 个答案:

答案 0 :(得分:10)

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

enter image description here

此处提供更多信息:http://technet.microsoft.com/en-us/library/aa997170(EXCHG.140).aspx

答案 1 :(得分:3)

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

答案 2 :(得分:0)

我遇到了同样的问题。我在单独的控制台应用程序中测试了SMTP设置,它运行正常。经过一些谷歌搜索,我意识到我的问题是我在配置中指定了两次来自地址的事实:

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

还有我的代码:

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

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

答案 3 :(得分:-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