asp.net-mvc – 与SmtpClient.UseDefaultCredentials属性混淆
在我的MVC4应用程序中,我使用SmtpClient通过Gmail的smtp.gmail.com SMTP服务器发送电子邮件.
我已经使用以下设置配置了我的Web.Config文件: <system.net> <mailSettings> <smtp deliveryMethod="Network"> <network enableSsl="true" defaultCredentials="false" host="smtp.gmail.com" port="587" userName="xxMyUserNamexx@gmail.com" password="xxMyPasswordxx" /> </smtp> </mailSettings> </system.net> 使用SmtpClient并发送电子邮件的方法如下所示: public void SendMail(string fromDisplayName,string fromEmailAddress,string toEmailAddress,string subject,string body) { MailAddress from = new MailAddress(fromEmailAddress,fromDisplayName); MailAddress to = new MailAddress(toEmailAddress); MailMessage mailMessage = new MailMessage(from,to); mailMessage.Body = body; mailMessage.Subject = subject; SmtpClient client = new SmtpClient(); //client.UseDefaultCredentials = false; client.Send(mailMessage); } 以上代码按预期工作正常.有什么困扰我的是注释行client.UseDefaultCredentials = false; – 如果我要取消对该行的注释,我将收到一条异常消息,其中指出:
更重要的是,如果我将UseDefaultCredentials属性设置为true或false,我仍然会收到异常消息.避免异常消息的唯一方法是完全删除该行. 这个行为是否正常?你能解释为什么我收到异常消息吗? 解决方法
原因是因为UseDefaultCredentials的setter将Credentials属性设置为null,如果将其设置为false,或者将其设置为CredentialCache.DefaultNetworkCredentials属性(如果设置为true). DefaultNetworkCredentials属性为defined by MSDN as:
当您将UseDefaultCredentials设置为true时,它将使用您的IIS用户,并且假设您的IIS用户与您使用的任何SMTP服务器的帐户不具有与您的帐户相同的身份验证凭据.将UseDefaultCredentials设置为false将设置的凭据设置为false.所以无论哪种方式你都会得到这个错误. 以下是使用dotPeek的UseDefaultCredentials设置器: set { if (this.InCall) { throw new InvalidOperationException( SR.GetString("SmtpInvalidOperationDuringSend")); } this.transport.Credentials = value ? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials : (ICredentialsByHost) null; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 无需写try/catch,也能正常处理异常
- asp.net-mvc – ASP.NET MVC – Elmah不工作,返回404页面为
- asp.net-mvc-3 – AZURE ACS – Windows Live ID – 如何获
- 扩展(ASP.NET)BoundField
- asp.net-mvc-3 – 如何在控制器方法的新选项卡中打开cshtml
- image – 在MVC webgrid中添加“加载”指示符?
- .net – 为什么事件处理程序只能在IHttpModule初始化期间绑
- 在asp.net mvc中实现“关注人,发布”功能
- asp.net-core – 使用dotnet pack包含所有依赖项
- asp.net-mvc-3 – 我可以在ASP.Net MVC中使用OutputCache和
- asp.net-web-api – 使用多种授权方案(HMAC和OAT
- asp.net-mvc – Controller Action方法仅在第一次
- asp.net-web-api – Structure Map无参数构造函数
- asp.net core中使用log4net
- asp.net-mvc – ASP.NET MVC – 在客户端缓存页面
- asp.net – updatepanel中的文本框的问题 – 不会
- ASP.NET MVC – jquery datepicker
- iis-7 – 在iis7上设置经典的asp站点,站点运行但
- asp.net – 将自动Web测试集成到构建过程中
- asp.net – 如何显示UTC时间作为本地时间在网页?