所以我有这个非常基本的程序试图发送电子邮件,但我一直在
邮箱不可用。服务器响应是: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,一切都很好。
以下是在交换服务器上为我的IP设置的接收连接器上的一些屏幕截图
任何人都有任何想法会在我的代码中导致此错误,但不是在简单的SMTP测试工具中?我在某处遗漏了某种身份验证选项吗?我有四重检查所有信息在两个地方都是正确和相同的,它可以在工具中使用,但不在代码中。
答案 0 :(得分:10)
我发现了问题,我需要为经过身份验证的用户选中“接受任何发件人”框。
此处提供更多信息: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