我有一个小型 tcp 服务器,除其他外,还用于通过 SMTP 服务器发送邮件。
问题是,当我在开发计算机(到 smtp 服务器的远程连接)上运行它时它可以正常工作,但是当我在与 SMTP 服务器(Windows Server 2008 R2)相同的计算机上运行该应用程序时,我收到以下异常:
System.Net.Mail.SmtpException:发送邮件失败。 ---> System.IO.IOException:无法从传输连接读取数据:net_io_connectionclose。
SMTP 服务器配置为仅允许来自 127.0.0.1 和 tcp 应用程序绑定到的 IP 地址以及我的开发计算机的中继。它还配置为仅允许来自同一 IP 列表的连接。
发送邮件的C#位如下:
var mail = new MailMessage();
mail.To.Add(recipient);
mail.From = new MailAddress("[email protected] /cdn-cgi/l/email-protection");
mail.Subject = "subject";
mail.Body = "message";
var smtpClient = new SmtpClient(MailServerAddress, Constants.MAIL_SERVER_PORT);
smtpClient.Send(mail);
MailServerAddress
是在应用程序首次运行时定义的。
我尝试将其设置为 127.0.0.1 和 SMTP 服务器配置的 IP 地址,但仍然遇到相同的异常。
检查服务器日志没有显示连接的迹象,这符合上述例外情况。
我在这里做错了什么?
只是在黑暗中刺探答案,但是尝试一下,因为大约 3 年前我也遇到过类似的问题,但不记得修复了,但是当我看一下时,这行代码对我来说很突出
_client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
所以也许可以尝试(假设您使用 IIS 进行 SMTP):
var smtpClient = new SmtpClient(MailServerAddress, Constants.MAIL_SERVER_PORT);
smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
smtpClient.Send(mail);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)