Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我使用谷歌&x27;smtp';无法发送电子邮件?_C#_Email_Smtp_Gmail - Fatal编程技术网

C# 为什么我使用谷歌&x27;smtp';无法发送电子邮件?

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

我有以下程序使用“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,字节[]命令,字符串从)
在 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>