SMTP异常:无法从传输连接读取数据:net_io_connectionclosed
本文关键字:net 数据 io connectionclosed 读取 传输 异常 SMTP 连接 | 更新日期: 2023-09-27 18:21:28
我知道这个问题看起来和其他几十个问题重复,但事实并非如此。
当我试图通过web应用程序在本地机器上发送电子邮件时,会抛出SMTPException,异常为:
//on this line : SmtpServer.Send(mail);
Unable to read data from the transport connection: net_io_connectionclosed.
虽然生产上的代码运行得很好,但相同的代码、相同的连接、相同的凭据,我使用的是IP而不是别名,我试图关闭本地机器上的防火墙,但没有任何帮助我解决这个问题。
虽然以前在我的本地机器上工作过,但有人能给我一个提示吗?引发这个问题的问题可能是什么?
如果您使用住宅互联网连接,您的ISP通常会通过阻止所有到端口25的出站连接来阻止传出电子邮件发送。这在美国很常见。请尝试通过TCP/IP连接到本地电子邮件服务器,或者连接到自己内部网络上的服务器。
这个线程包含一些。
例如:看起来分配一个静态IP可能会解决问题。
此错误意味着System.net.mail无法找到smtp服务器。
答案会因您是否拥有固定IP或动态IP,但基本上,您需要为smtp分配一个有效的IP服务器
对于固定IP,这是相对简单的。具有动态IP这需要一些调整。
打开IIS管理器并检查smtp服务器的属性。
在默认SMTP虚拟服务器的属性中的"访问"选项卡中,在"连接控制"answers"中继"对话框中,确保您的本地IP已分配。(在我的情况下,它是10.0.0.2…)
您可能还需要修改主机文件,将127.0.0.1指向您的机器名称。(''WINDOWS''system32''drivers''etc''hosts)
然后,在您的代码中,将您的机器名称分配给smtp客户端:
Dim client As New SmtpClient("yourmachinename") client.Send(mail)
或者,同一线程中的另一个人似乎找到了解决SMTP连接未正确关闭的方法。
根据支持的设置
SmtpClient.ServicePoint.MaxIdleTime = 1
解决方法:http://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=146711这使得所有smtp都能正常工作。这是一个完整的样本:
MailMessage msgMail = new MailMessage(); msgMail.To.Add(new MailAddress("info@somedomain.se")); msgMail.Subject = "Message from web"; msgMail.IsBodyHtml = true; msgMail.Body = "Test message"; SmtpClient Client = new SmtpClient(); /* uses settings form web.config */ Client.ServicePoint.MaxIdleTime = 1; /* without this the connection is idle too long and not terminated, times out at the server and gives sequencing errors */ Client.Send(msgMail); msgMail.Dispose();
System.Net.NetworkCredential(用户,密码)///错误
System.Net.NetworkCredential(电子邮件、密码)///右
因为某些电子邮件服务器不可用
在我的情况下,在设置用户名和密码
Network Credentials
中省略Domain
属性您使用的Gmail帐户每天/每月发送的电子邮件数量有限制,如果您超过该限制,它将拒绝任何进一步发送的电子邮件。