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;
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.Net MVC 3.0 Ajax.ActionLink使用javas
- asp.net – 使用itemtemplate动态地将列添加到Grid-view
- asp.net-web-api – webapi批处理和委托处理程序
- asp.net-mvc-3 – ASP.NET成员资格 – 本地登录,在Azure上失
- .net – RESTful WCF的裸最低配置
- asp.net – recaptcha https问题https://api-secure.recapt
- asp.net – SignalR和浏览器连接限制
- asp.net-mvc – ViewModel中的ASP.NET MVC SelectList
- 具有匹配客户端和服务器端标记的ASP.NET页面的选项?
- asp.net – CheckBoxList滚动条
- asp.net – 如何在Web应用程序中获取Client Mach
- asp.net-web-api – ASP.NET WebApi测试 – 断言
- Asp.Net Core中WebSocket绑定的方法详解
- 什么是文字控制用于和asp.net的标签控制有什么区
- ASP.NET OAuth授权 – 使用ClientId和Secret以及
- IIS7上的ASP.NET身份验证问题 – 对于Windows身份
- 在ASP.NET动态数据中隐藏列
- asp.net-mvc – 如何检测移动浏览器,并将适当的内
- asp.net – 当完全执行OnResultExecuted和OnResu
- asp.net-mvc – 404处理Azure网站
