谷歌应用程序电子邮件/SMTP发送网站邮件的问题

3

我有一个使用谷歌SMTP发送电子邮件的Asp.Net网站。使用以下配置项,普通的Gmail帐户可以正常工作。

<smtp from="myname@gmail.com">
<network host="smtp.gmail.com" port="587" userName="myname@gmail.com" password="mypassword" enableSsl="true" /></smtp>

现在我需要使用谷歌应用的电子邮件和SMTP,我尝试按照下面所示的配置更改:
<smtp from="myname@mydomain.com">
    <network host="smtp.gmail.com" port="587" userName="myname@mydomain.com" password="mypassword" enableSsl="true" /> </smtp>

但是它会抛出“身份验证失败”的错误!!!
“SMTP服务器需要安全连接或客户端未经过身份验证。 服务器响应为:5.5.1需要身份验证。 了解更多信息”
我已经仔细检查了Google电子邮件设置、用户名和密码,但仍然无法解决!
对于这个问题有任何想法都将是很大的帮助。
谢谢和问候,
Anz
2个回答

3

来自 MSDN:

有些 SMTP 服务器要求在向其发送电子邮件之前必须对客户端进行身份验证。当此 SmtpClient 对象应使用当前登录用户的默认凭据进行身份验证时,请将此属性设置为 true。如果 UseDefaultCredentials 属性设置为 false,则连接服务器时将使用 Credentials 属性中设置的凭据。

    client.UseDefaultCredentials = false;
    smtp.EnableSsl = true;
    client.Credentials = new System.Net.NetworkCredential(username, password);
    ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; 

    smtp.Send(mail);

Look to this link also.


2
感谢回复。你的代码片段给了我一个提示解决了问题 :) 只是想在web.config中添加defaultCredentials="false".. 不确定为什么使用免费的Gmail帐户发送时不需要!! - Ansar Muhammad
如何在vb.net中设置ServicePointManager设置?我找不到其中的委托? - DShah

0

您应该遵循服务器响应中的指示(如果有)。可能,您需要更多/另一种身份验证方案而不是通常的用户名/密码模式。也许您可以在Google API文档中找到更多答案?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接