Bob*_*man 18 c# authentication gmail smtp web-config
鉴于以下部分Web.Config
:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="SomeWebsite Admin <someuser@gmail.com>">
<network host="smtp.gmail.com" port="587" defaultCredentials="true" userName="someuser@gmail.com" password="somepassword" />
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
以下代码片段:
smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential( "someuser@gmail.com", "somepassword" );
smtp.Send( mailMessage );
Run Code Online (Sandbox Code Playgroud)
以上工作正常,但注释程序覆盖,如下所示:
smtp = new SmtpClient();
//smtp.Host = "smtp.gmail.com";
//smtp.Port = 587;
smtp.EnableSsl = true;
//smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
//smtp.UseDefaultCredentials = false;
//smtp.Credentials = new NetworkCredential( "someuser@gmail.com", "somepassword" );
smtp.Send( mailMessage );
Run Code Online (Sandbox Code Playgroud)
失败了:
System.Net.Mail.SmtpException: {"The SMTP server requires a secure connection or the
client was not authenticated. The server response was: 5.5.1 Authentication Required.
Learn more at "}
Run Code Online (Sandbox Code Playgroud)
是的,"了解更多"之后的空白确实存在,它让事情变得更加有趣.事实上,我不能硬编码这些价值观,因为它们从开发变为内部分期变为现实.所以我想知道为什么它似乎无法使用Web.Config
默认值.我想我错过了一个关键的东西 - 或者其他的东西?
*编辑*
这里有一些更多信息,查看我的smtp
对象的值(没有编程覆盖,除了EnableSSL = true):
Host = smtp.gmail.com (makes sense -- proves I'm actually editing the right Web.Config...
DeliveryMethod = Network
Port = 587
Credentials.UserName = <blank> (Problem???)
Credentials.Password = <blank> (Problem???)
Credentials.Domain = <blank>
Run Code Online (Sandbox Code Playgroud)
*编辑编辑*
下面的缺失Username
和Password
值以及接受的响应让我想到了这个问题:defaultCredentials
在Web.Config中必须如此false
.
lam*_*tor 27
对于最终在这里结束的谷歌,正确的做法是:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="SomeWebsite Admin <someuser@gmail.com>">
<network host="smtp.gmail.com" port="587" enableSsl="true" defaultCredentials="false" userName="someuser@gmail.com" password="somepassword" />
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
然后你的代码就是:
smtp = new SmtpClient();
smtp.Send( mailMessage );
Run Code Online (Sandbox Code Playgroud)