居然是15秒。我从msdn得到的代码。字符串="jane@contoso.com";来自="ben@contoso.com"的字符串;stringsubject="使用新的SMTP客户端。";stringbody=@"使用这个新功能,您可以非常轻松地从应用程序发送电子邮件消息。";MailMessagemessage=newMailMessage(from,to,subject,body);SmtpClientclient=newSmtpClient("1.2.3.4");Console.WriteLine("正在将超时时间从{0}更改为100。",client.Timeout);客户端.Timeout=1;//如果服务器要求客户端//在代表客户端发送电子邮件之前进行身份验证,则需要凭据。client.Credentials=CredentialCache.DefaultNetworkCredentials;客户端。发送(消息);我尝试了单声道实现,但它也没有用。有没有人遇到过同样的问题?重现您的测试-它对我有用你问是否有人遇到同样的问题-我刚刚在Windows7、VS2008和.NET2.0上尝试了你的代码-它工作得很好。将超时设置为1,就像你有它一样,我几乎立即收到此错误:未处理的异常:System.Net.Mail.SmtpException:操作在System.Net.Mail.SmtpClient.Send(MailMessagemessage)atmailtimeout处超时.Program.Main(String[]args)inc:testmailtimeoutProgram.cs:line29我认为问题可能是您期望的超时有所不同。超时表示连接成功,但服务器没有返回响应。这意味着您实际上需要让服务器在端口25上侦听目标,但它没有响应。对于此测试,我使用Tcl在25上创建一个什么也不做的套接字:c:>tclsh%socket-serverfoo25当我将超时更改为15000时,5天后我没有收到超时错误。为什么Smtp.Timeout在无法建立连接的情况下没有效果如果25端口没有监听,或者主机不可达,system.net.tcpclient层至少超时20system.net.tcpclient时发生超时。它位于system.net.mail层之下。从描述问题和解决方案的优秀文章中:您会注意到System.Net.Sockets.TcpClient和System.Net.Sockets.Socket类都没有连接套接字的超时。我的意思是你可以设置超时。在建立同步/异步套接字连接时调用Connect/BeginConnect方法时,.NET套接字不提供连接超时。相反,如果它尝试连接的服务器没有侦听或有任何网络错误,它会强制连接等待很长时间才能抛出异常。默认超时为20-30秒。无法更改来自邮件的超时(这是有道理的,邮件服务器通常是正常运行的),实际上也没有能力更改来自system.net.socket的连接,这真是令人惊讶。但是你可以建立一个异步连接,然后你可以知道你的主机是否启动并且端口是否打开。从这个MSDN线程,特别是这篇文章,这段代码有效:Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IAsyncResult结果=socket.BeginConnect("192.168.1.180",25,null,null);//两秒超时boolsuccess=result.AsyncWaitHandle.WaitOne(2000,true);如果(!成功){socket.Close();thrownewApplicationException("连接服务器失败。");添加到ckhan的回答中,我想与您分享一个实施更短暂停的建议:vartask=Task.Factory.StartNew(()=>SendEmail(email));if(!task.Wait(6000))//TCP层超时错误处理(但你没有得到异常对象)theninSendEmail():using(varclient=newSmtpClient(_serverCfg.Host,_serverCfg.端口)){尝试{client.Timeout=5000;//比task.Wait()更短的超时//...client.Send(msg);}catch(Exceptionex){//异常处理}}这个解决方案有一个权衡,你不会在任务中获得异常细节。等等,但也许值得?以上就是C#学习教程的全部内容:SmtpClient超时不起作用。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
