我正在开发一个发送电子邮件的应用程序,其中一个组件使用用户的Windows凭据发送电子邮件。
string SMTP = "smtp.corp.com";
MailMessage msg = new MailMessage(Sender, Recipient, Subject, Body);
SmtpClient smtpclient = new SmtpClient(SMTP, 25);
smtpclient.EnableSsl = false;
smtpclient.UseDefaultCredentials = true;
msg.IsBodyHtml = true;
ServicePointManager.ServerCertificateValidationCallback = delegate(object s,X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
smtpclient.Send(msg);
此代码在本地计算机上运行正常,但在服务器上部署后却出错
Mailbox unavailable. The server response was: 5.7.1 Client does not have permissions to send as this sender
因为在这种情况下发件人是:
string Sender = HttpContext.Current.User.Identity.Name+"@corp.com";
由于
答案 0 :(得分:1)
在本地计算机上,您的应用程序以管理员身份运行,因此具有发送电子邮件的完全权限。所以它适用于您的本地机器
但是在服务器上,如果您的应用程序不以管理员身份运行,则它将无权发送电子邮件。所以它不能在您的服务器上运行。
所以解决方法是,给你的应用程序许可。
答案 1 :(得分:0)
由于访问权限不足,您将收到此错误,在这种情况下,您必须首先提供它们。
您有更改
smtpclient.UseDefaultCredentials = false;
smtpclient.Credentials = new System.Net.NetworkCredential("username", "password");
或在Web.Config中进行更改,如
<mailSettings>
<smtp from="SystemAdmin@domain.do">
<!--network host="EXCH-SERVER" port="25" userName="userName" password="password"
defaultCredentials="false" /-->
<network host="EXCH-SERVER" port="25" />
</smtp>
</mailSettings>
请查看here
希望这会对你有所帮助。
答案 2 :(得分:0)
在服务器上部署后
哪些Windows用户在服务器上运行?如果这是在IIS内部运行的ASP.Net,那么它正在使用您在应用程序池中设置的任何身份....这是什么?