C# 为什么我使用谷歌&x27;smtp';无法发送电子邮件?
我有以下程序使用“smtp.gmail.com:587”发送电子邮件 myTest@gmail.com, myTest2@gmail.com是真的存在和myTest@gmail.com的密码是myPassword。为什么我会出现以下错误: 未处理的异常: System.Net.Mail.SmtpException:异常 SMTP服务器需要一个安全的 连接或客户端未连接 认证的。服务器响应 was:5.5.1需要身份验证。 了解更多信息,请访问 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode 状态代码,字符串响应)位于 System.Net.Mail.MailCommand.Send(SmtpConnection conn,字节[]命令,字符串从)C# 为什么我使用谷歌&x27;smtp';无法发送电子邮件?,c#,email,smtp,gmail,C#,Email,Smtp,Gmail,我有以下程序使用“smtp.gmail.com:587”发送电子邮件 myTest@gmail.com, myTest2@gmail.com是真的存在和myTest@gmail.com的密码是myPassword。为什么我会出现以下错误: 未处理的异常: System.Net.Mail.SmtpException:异常 SMTP服务器需要一个安全的 连接或客户端未连接 认证的。服务器响应 was:5.5.1需要身份验证。 了解更多信息,请访问 System.Net.Mail.MailComman
在 System.Net.Mail.SmtpTransport.SendMail(邮件地址 发件人,MailAddressCollection 收件人,字符串deliveryNotify, SmtpFailedRecipientException& 例外情况)在 System.Net.Mail.SmtpClient.Send(MailMessage 信息)在 TestMailServer.Program.Main(字符串[]) D:\visualstudio中的args) 2010\Projects\TestMailServer\TestMailServer\Program.cs:line 26按任意键继续
我不确定是什么导致了你的问题。以下是我通过gmail帐户成功发送电子邮件的一些代码:
const string from = "...";
var fromAddr = new MailAddress(from, "Bug Tracker");
var toAddr = new MailAddress("...@...", "...");
var client = new SmtpClient {
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Timeout = 30 * 1000,
Credentials = new NetworkCredential(fromAddr.Address, "...")
};
using (var msg = new MailMessage(fromAddr, toAddr)) {
msg.Subject = "...";
msg.Body = string.Format("username: {0}\nversion: {1}\n\n{2}", Environment.UserName, Assembly.GetExecutingAssembly().GetName().Version.ToString(3), cbtext);
client.Send(msg);
}
据我所知,默认情况下UseDefaultCredentialsProperty设置为true。这可能会导致您的身份验证错误。尝试将上一个答案中的这些行添加到代码中
SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
SmtpServer.UseDefaultCredentials = false;
如果不显式地设置DeliveryMethod属性,我会遇到一些奇怪的异常。我有Ferruccio发布的代码,最近它停止了工作。我将我的设置移到了我网站的.config文件中,它又开始工作了:
<system.net>
<mailSettings>
<smtp from="fromEmail" deliveryMethod="Network">
<network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587"
userName="fromEmail" password="password"/>
</smtp>
</mailSettings>
</system.net>
我们一直在努力解决同样的错误。使用smtp.gmail.com,谷歌会阻止任何登录发件人电子邮件的尝试,除非该邮件经过身份验证。登录到您的电子邮件帐户并对发送的验证邮件进行操作。这将授予您访问C#应用程序的权限我建议您看看这是否仍然适用于您?这正是我过去使用过的代码,但随着谷歌最近转换为谷歌应用程序邮件的“共享”设置,这似乎已经停止工作,出现了OP所得到的错误。@Charles Boyung:它在2011年4月19日起工作。每当出现未处理的异常时,系统就会向我发送一封带有堆栈跟踪的电子邮件。所以这是一个罕见的事件。我会再测试一次,我刚测试过。它还在工作。也许问题出在gmail设置上。你的谷歌应用程序域名已经被转换了吗?不知道转换是否改变了什么。我不确定你所说的“谷歌应用程序域”是什么意思。我没有使用谷歌应用程序,只是一个gmail帐户。
<system.net>
<mailSettings>
<smtp from="fromEmail" deliveryMethod="Network">
<network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587"
userName="fromEmail" password="password"/>
</smtp>
</mailSettings>
</system.net>