我知道这个问题看起来像是其他许多问题的重复,而不是.
当我尝试通过我的Web应用程序在本地计算机上发送电子邮件时,抛出了SMTPException,例外情况是:
//on this line : SmtpServer.Send(mail);
Unable to read data from the transport connection: net_io_connectionclosed.
Run Code Online (Sandbox Code Playgroud)
虽然生产代码完美,相同的代码,相同的连接,相同的凭据,我使用IP而不是别名,我试图关闭我的本地机器上的防火墙,没有什么帮助我解决这个问题.
虽然在我的本地机器上用于以前工作,但任何人都可以只提示提出这个问题可能是什么问题?
Rob*_*Kee 24
如果您使用的是住宅互联网连接,那么您的ISP通常会通过阻止所有到端口25的出站连接来阻止外发电子邮件发送.这在美国很常见.尝试通过TCP/IP连接到本地电子邮件服务器,或连接到您自己的内部网络上的服务器.
这个帖子包含一些.
例如:看起来分配静态IP可能会解决问题.
这个错误意味着System.net.mail无法找到smtp服务器.
答案取决于您是拥有固定IP还是动态IP,但基本上,您需要为smtp服务器分配有效的IP.
使用固定IP,这是相对简单的.使用动态IP需要一些调整.
打开IIS管理器并检查smtp服务器的属性.
在默认SMTP虚拟服务器的属性中,在"访问"选项卡的"连接控制和中继"对话框中,确保已分配本地IP.(就我而言,它是10.0.0.2 ...)
您可能还需要修改hosts文件,将127.0.0.1指向您的计算机名称.(\ WINDOWS\system32\drivers\etc\hosts)
然后,在您的代码中,将您的机器名称分配给smtp客户端:
Run Code Online (Sandbox Code Playgroud)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正常工作.这是一个完整的示例:
Run Code Online (Sandbox Code Playgroud)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();
归档时间: |
|
查看次数: |
87964 次 |
最近记录: |