Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# SmtpException:发送邮件失败_C#_Asp.net_Email_Smtp_Asp.net Core 2.0 - Fatal编程技术网

C# SmtpException:发送邮件失败

C# SmtpException:发送邮件失败,c#,asp.net,email,smtp,asp.net-core-2.0,C#,Asp.net,Email,Smtp,Asp.net Core 2.0,我正在开发一个ASP.NETCore2.0Web应用程序,我想在其中发送电子邮件。但当我运行我的方法时(我在web上的不同教程中看到),它会超时: 处理请求时发生未处理的异常。 SmtpException:操作已超时 System.Net.Mail.SmtpClient.Send(MailMessage) 我找不出是怎么回事 谢谢你的帮助 编辑:控制台测试崩溃 Unhandled Exception: System.Net.Mail.SmtpException: Failure sending

我正在开发一个ASP.NETCore2.0Web应用程序,我想在其中发送电子邮件。但当我运行我的方法时(我在web上的不同教程中看到),它会超时:

处理请求时发生未处理的异常。 SmtpException:操作已超时

System.Net.Mail.SmtpClient.Send(MailMessage)

我找不出是怎么回事

谢谢你的帮助

编辑:控制台测试崩溃

Unhandled Exception: System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
   at System.Net.Sockets.TcpClient.Connect(IPEndPoint remoteEP)
   at System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
   at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port)
   at System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port)
   at System.Net.Mail.SmtpClient.GetConnection()
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   --- End of inner exception stack trace ---
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at ConsoleApp2.Program.Main(String[] args)
编辑[已解决]: 必须设置一个deliveryMethod,如下所示:

client.DeliveryMethod = SmtpDeliveryMethod.Network;
完整代码,如果它可以帮助任何人:

static void MailSender()
        {
            string address = "example@gmail.com";
            string password = "gmailpassword";
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.UseDefaultCredentials = false;
            client.Credentials = new System.Net.NetworkCredential(address, password);
            client.EnableSsl = true;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;

            MailMessage mailMessage = new MailMessage();
            mailMessage.From = new MailAddress(address);
            mailMessage.To.Add(anyone@anything.com);
            mailMessage.Body = "test";
            mailMessage.Subject = "subject";
            client.Send(mailMessage);
        }

请检查这个@VikasLalkiya:OP已经在这样做了。您将超时设置为3秒。您是否可以想象,为
smtp.gmail.com
执行DNS查找、连接并发送电子邮件可能需要3秒以上的时间?您可能应该更仔细地考虑合理的超时时间应该是多少。您希望它足够长,以便在正常情况下通过电子邮件,但不要太长,如果无法访问该服务,它将占用您的代码非常长的时间。即使发现防火墙之类的东西正在阻止连接,此评论仍然有效。看起来客户端无法访问服务器。也许是防火墙?@mason我真是太傻了,但这并没有导致内部服务器错误。请检查这个@VikasLalkiya:OP已经在这么做了。你将超时设置为3秒。您是否可以想象,为
smtp.gmail.com
执行DNS查找、连接并发送电子邮件可能需要3秒以上的时间?您可能应该更仔细地考虑合理的超时时间应该是多少。您希望它足够长,以便在正常情况下通过电子邮件,但不要太长,如果无法访问该服务,它将占用您的代码非常长的时间。即使发现防火墙之类的东西正在阻止连接,此评论仍然有效。看起来客户端无法访问服务器。也许是防火墙?@mason我真是太傻了,但这并没有导致内部服务器错误
client.DeliveryMethod = SmtpDeliveryMethod.Network;
static void MailSender()
        {
            string address = "example@gmail.com";
            string password = "gmailpassword";
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.UseDefaultCredentials = false;
            client.Credentials = new System.Net.NetworkCredential(address, password);
            client.EnableSsl = true;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;

            MailMessage mailMessage = new MailMessage();
            mailMessage.From = new MailAddress(address);
            mailMessage.To.Add(anyone@anything.com);
            mailMessage.Body = "test";
            mailMessage.Subject = "subject";
            client.Send(mailMessage);
        }