Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
ASP.NET C#-从Gmail/Yahoo Live SMTP服务器发送电子邮件不工作_C#_.net_Email_Smtp_Gmail - Fatal编程技术网

ASP.NET C#-从Gmail/Yahoo Live SMTP服务器发送电子邮件不工作

ASP.NET C#-从Gmail/Yahoo Live SMTP服务器发送电子邮件不工作,c#,.net,email,smtp,gmail,C#,.net,Email,Smtp,Gmail,我正在努力尝试从.NET应用程序发送电子邮件 我尝试了一切,从创建gmail和yahoo的新帐户(为yahoo更改了主机),以及使用和不使用邮件更改端口。到允许不太安全的应用程序,我还尝试启用两步验证,并为gmail提供应用程序密码,所有这些都失败了,出现了相同的错误:{“SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.7.1需要身份验证”} 这是我的代码: SmtpClient smtpClient = new SmtpClient(); System

我正在努力尝试从.NET应用程序发送电子邮件

我尝试了一切,从创建gmail和yahoo的新帐户(为yahoo更改了主机),以及使用和不使用邮件更改端口。到允许不太安全的应用程序,我还尝试启用两步验证,并为gmail提供应用程序密码,所有这些都失败了,出现了相同的错误:{“SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.7.1需要身份验证”}

这是我的代码:

 SmtpClient smtpClient = new SmtpClient();
        System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("myemail@gmail.com", "pw");
        smtpClient.Credentials = credentials;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.Host = "smtp.gmail.com";
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

        MailMessage mail = new MailMessage();
        mail.From = new MailAddress("myemail@gmail.com");
        mail.To.Add("myemail@gmail.com");
        mail.IsBodyHtml = true;
        mail.Subject = txtSubject.Text;
        mail.Body = txtBody.Text;
        try
        {
            smtpClient.Send(mail);
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            if (mail != null)
            {
                mail.Dispose();
            }
        }
解决方案:由于人们将来可能会遇到问题,解决方案是删除代码行:smtpClient.usedaultcredentials=false

smtpClient.UseDefaultCredentials = false;            
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("myemail@gmail.com", "pw");
smtpClient.Credentials = credentials;
按这样的顺序使用这些行


按照这样的顺序使用这些行。

千万不要对捕获到的异常执行
抛出ex;
。只要使用
抛出;
就可以保留堆栈跟踪。我是否也应该将异常ex更改为Just exception呢?嗨..tra this..在执行它的服务器上运行浏览器和Gmail..q然后你必须设置chrome的安全选项要允许从esternalNo访问和使用它,您应该完全删除您的try/catch。只有在您正计划处理异常时才捕获异常。简单地捕获并再次抛出它是没有意义的。如果您想确保
邮件
得到处理,请将其包装在using语句中。这可能有助于永远不要执行
throw ex;
处理捕获到的异常。只需使用
throw;
即可保留stacktrace。我是否也要将exception ex更改为Just exception?您好..转换此…在执行它的服务器中运行浏览器和Gmail..然后您必须设置chrome的安全选项,以允许从esternalNo访问它和使用它。您需要应该完全删除您的try/catch。只有在您正计划处理异常时才捕获异常。简单地捕获并再次抛出它是没有意义的。如果您想确保
邮件
得到处理,请将其包装在using语句中。这可能有助于在某种程度上实现这一点。与其说是第一个错误,不如说是第一个错误现在得到错误:发送邮件失败您修复了它,我犯了一点错误我删除了smtpClient.UseDefaultCredentials=false;现在它工作了。谢谢:)这样做在某种程度上起了作用。与第一个错误不同,我现在得到错误:发送邮件失败您修复了它,我犯了一点错误我删除了smtpClient.UseDefaultCredentials=错误;现在它工作了。谢谢:)