使用应用程序用户的Windows凭据发送电子邮件

时间:2014-04-29 03:09:03

标签: c# asp.net email

我正在开发一个发送电子邮件的应用程序,其中一个组件使用用户的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";

由于

3 个答案:

答案 0 :(得分:1)

在本地计算机上,您的应用程序以管理员身份运行,因此具有发送电子邮件的完全权限。所以它适用于您的本地机器

但是在服务器上,如果您的应用程序不以管理员身份运行,则它将无权发送电子邮件。所以它不能在您的服务器上运行。

所以解决方法是,给你的应用程序许可。

更多详细信息请看此链接: http://social.technet.microsoft.com/Forums/exchange/en-US/e763de97-88a1-494d-9841-4f3a466b5604/exchange-550-571-client-does-not-have-permissions-to-send-as-this-sender

答案 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,那么它正在使用您在应用程序池中设置的任何身份....这是什么?