电子邮件 – 邮箱不可用,客户端没有权限作为此发件人发送 – 仅限第一次

前端之家收集整理的这篇文章主要介绍了电子邮件 – 邮箱不可用,客户端没有权限作为此发件人发送 – 仅限第一次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的用户只需点击一下按钮就可以从我们的ASP.NET Web应用程序发送电子邮件.在我们的测试环境中,发生了一件奇怪的事情.

应用程序第一次尝试发送电子邮件时,我们会收到异常:

信箱不可用.服务器响应为:5.7.1客户端无权作为此发件人发送

有趣的是,当用户再次点击该按钮时(因此应用程序尝试再次发送电子邮件),它可以工作,并发送电子邮件.

如果您等待一段时间,您将再次收到错误,但第二次点击将发送电子邮件没有问题.如果您足够快,可以发送新电子邮件,那就可以了.

这是我们使用的(简化)代码

Dim smtpClient As New SmtpClient(<smtp mail server goes here>)
smtpClient.UseDefaultCredentials = True
mailMessage.From = New MailAddress(<from address>)
smtpClient.Send(mailMessage)

但这确实适用于生产环境.我们使用的是Microsoft Exchange,我们的客户(生产环境)也是如此.

有没有人有类似的东西(第一次出错,第二次像魅力一样)?

解决方法

我之前已经看过几次,这是我见过的原因.请记住,这些只能在大型环境中看到.如果您在单个直流,单一交换服务器环境中,则这些将不适用.

首先,这里是MS文章http://support.microsoft.com/kb/895853.在可能的情况下,你可以看到有很多东西在起作用.

您的一个Exchange服务器中继权限未正确设置.

这是最可能的原因.邮件可能在第一次和第二次尝试时采用不同的路由,而这可能听起来对两条消息进行愚蠢的邮件跟踪,看看它们是否通过同一台服务器.如果你看到不同的路径检查坏的路径上的设置,可能是一个简单的允许中继用于经过身份验证的用户未检查.

AD权限是错误

您必须具有来自电子邮件中发件人地址的帐户的“代理发送”权限.如果它有时工作,而不是其他工作,那么它可能是邮件路由的不同路径,它们之间具有不同的权限.

身份验证无法正常运行.

在脚本的第一个实例中,可能是身份验证失败,在这种情况下,由于您没有权限,邮件被拒绝.在脚本的第二次运行中,身份验证成功.不幸的是,我不太了解ASP,无法理解上面的代码或建议如何解决它. smtpClient.UseDefaultCredentials可能不是您环境的正确代码.这仅在服务器请求时进行身份验证,并将使用本地登录用户的凭据.如果服务器第一次没有要求身份验证,那么您将不会被授权,也可能没有发送权限.尝试将其更改为始终进行身份验证的代码.

您的某个DC或全局目录已过期或信息不完整.

这种情况很少见,但您的域控制器可能存在不同步信息.通过ldap或adsi编辑仔细检查来自和来自帐户的服务器信息,并确保它们在所有dcs中是相同的.

在所有实例中,检查Exchange服务器上的日志,并确保启用所有字段的SMTP日志记录.使用邮件跟踪可以准确查看此邮件所针对的服务器.

猜你在找的asp.Net相关文章