winforms smtp错误无法从传输连接读取数据:远程主机强制关闭了现有连接

wgeznvg7  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(410)

我试图从c# windows应用程序发送电子邮件。我使用的是smtp.office365.com。我收到以下错误消息:
无法从传输连接读取数据:远程主机强制关闭了现有连接。
我是在Windows Server 2012上做的。
下面是我正在使用的代码:

try
        {

            smtp= new SmtpClient("smtp.office365.com");
            message = new MailMessage();

            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new NetworkCredential("office365mailid", "xxxx");
            smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtp.Port = 587;
            smtp.EnableSsl = true;

            message.To.Add(new MailAddress("toaddress"));
            message.Subject = "Test mail";
            message.From = new MailAddress("my office 365 mailbox address");
            message.Body = "Test";

            smtp.Send(message);

        }

        catch (Exception ex)
        {
        }
        finally
        {
            message.Dispose();
            smtp.Dispose();
        }
slwdgvem

slwdgvem1#

通常情况下,与SMTP服务器的连接已经建立,但由于几种可能的原因而被中断。
以下是一些原因:
1.如果您从ISP提供的IP地址呼叫SMTP服务器,您可能处于公共PBL(策略阻止列表)中,并且如果呼叫来自这样的IP地址,许多SMPT服务器会主动断开连接。这是防止来自家庭计算机的垃圾邮件的常见做法。
您可以在这里看到更多:策略阻止列表https://www.spamhaus.org/pbl/
1.发送电子邮件的主机必须正确设置“DNS PTR资源记录”。对于“message.From”,电子邮件的主机必须与DNS PTR资源记录中的主机相同,否则某些SMTP服务器将终止连接或发出554错误代码。“如何修复554无效PTR资源记录错误?”https://hoststud.com/resources/how-to-fix-the-554-invalid-ptr-resource-record-error.670/
1.“我们不建议您使用SmtpClient类进行新的开发,因为SmtpClient不支持许多现代协议。请改用MailKit或其他库。”https://learn.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=net-7.0#remarks
邮箱:https://github.com/jstedfast/MailKit

相关问题