带有远程浏览器的ASP.NET应用程序中的SmtpException

我在 Windows Server 2008计算机上运行IIS 4下的ASP.NET 4应用程序.该应用程序使用System.Net.Mail类通过SMTP服务器发送电子邮件.我使用端口587进行SSL连接.当我从服务器内浏览应用程序时,电子邮件发送正常.但是,当我从远程(客户端)计算机浏览到该应用程序时,电子邮件发送失败并出现具有StatusCode = GeneralFailure的SmtpException.该消息表明SMTP服务器无法连接,并且存在内部SocketException.

服务器正在运行F-Secure防病毒系统.我试过禁用它,但错误仍然存​​在.

电子邮件发送是否有效取决于我访问Web服务器的方式:

>如果我使用服务器的公共DNS名称从远程客户端浏览到http://myapp.mydomain.com,则会失败.
>如果我从远程客户端浏览到http://193.144.xxx.xxx/myapp,使用服务器的公共IP地址加上IIS中的Web应用程序的名称,那么它也会失败.
>如果我从远程客户端浏览到http://internal-name/myapp,使用域中的服务器内部名称加上IIS中的Web应用程序的名称,那么它可以工作!
>如果我从服务器本身的交互式会话中浏览,无论我如何操作(公共DNS名称,公共IP地址,内部域名或仅本地主机),那么它也可以.
从服务器浏览时,邮件发送是如何工作的,但远程浏览时却没有?在这两种情况下,它都是发送电子邮件的同一服务器.

如果我从Visual Studio中浏览我的开发机器上的应用程序,那么一切正常.

请看这个:https://serverfault.com/questions/845606/iis-randomly-returning-inet-e-resource-not-found

编辑.服务器具有在工作时内部使用的专用IP地址,以及公共DNS解析为的公共IP地址.服务器本身未配置此公共IP地址;相反,它是由我们的互联网接入提供商执行的转发服务.是否有可能SMTP服务器被连接请求从声称拥有地址的客户端到达,但其名称解析为其他地址的事实感到困惑?

有任何想法吗?谢谢.

最佳答案 经过多次调查,我们发现了根本问题.我们的Internet访问提供商在NAT表中发现了一个配置错误,该错误将公共IP地址映射到服务器的内部IP地址.这导致一些请求被删除.他们已经修复了配置,现在工作正常.

感谢所有为此提供帮助的人.

点赞