【问题标题】:How to troubleshoot random error while sending email from ASP.NET website如何解决从 ASP.NET 网站发送电子邮件时出现的随机错误
【发布时间】:2019-08-08 19:14:11
【问题描述】:

我从 ASP.NET (4.0) 网站发送电子邮件:

SmtpClient mySMTPClient = new SmtpClient();
mySMTPClient.UseDefaultCredentials = false;
mySMTPClient.Host = "email.privateemail.com";
mySMTPClient.Port = 465; //I also tried 587 and none of them
mySMTPClient.Credentials = new System.Net.NetworkCredential("contact@xxxxxx.com", "xxxxxxxxxx");
mySMTPClient.EnableSsl = true;
mySMTPClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mySMTPClient.Send(email);

我每天发送十几封电子邮件,而不是批量或循环发送。只有大约一半被发送。另一个失败并出现错误:

ERROR MESSAGE: Failure sending mail.
INNER EXCEPTION: System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.DelegatedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.BufferedReadStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
   at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
   at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpClient.GetConnection()
   at System.Net.Mail.SmtpClient.Send(MailMessage message)

失败的电子邮件是随机的。我没有模式。

Windows 服务器 2008 SP2 内部版本 6002 防火墙 PfSense - 工程师说规则配置正确,否则所有电子邮件都会失败。 第三部分电子邮件提供商:他们说一切都已正确配置,并且无论如何他们都无法进行任何修改。

我不是网络工程师,也没有。我的问题是,我该怎么做才能找到根本原因以便解决它?

到目前为止,我尝试了 Process Monitor,但它对我没有帮助(或者我不知道如何查看)。

我找到了几篇关于这个问题的文章,但目前没有一篇文章对我有帮助,因为它们的解决方案不适用于我的上下文(我尝试了一些但没有成功)。

谢谢

【问题讨论】:

  • 根据异常消息,看起来邮件服务器有问题,而不是您的应用程序。在尝试处理要发送的电子邮件时,它看起来可能会崩溃。
  • 两种常见的错误原因 1) 发送邮箱已满 2) 邮箱账号和发件人地址(或凭证)不一致。 Windows 仅允许当前用户使用网络凭据(除非您以管理员身份运行)。但是,如果您以管理员身份运行,则发件人地址仍然与凭据匹配。此外,电子邮件用户必须在运行代码的机器上拥有一个帐户。凭据是从在机器上拥有帐户的用户那里获得的。
  • @SeM 我红了那篇文章。该解决方案对我不起作用。我已经拥有 TLS 1.2 和强大的加密技术。问题出在实施 TLS 1.2 之前,并且 TLS 1.2 没有改善。 @Martin Costello 这就是我告诉运行私人电子邮件的 Namecheap 的话,但他们说一切都很好,他们不会做任何事情。我会尝试从 Gmail 发送所有电子邮件,看看它是如何工作的。好主意。 @jdweng 凭据应该没问题,因为错误只是随机的
  • 只要确保问题是随机的,而不是其他因素。我会尝试发送完全相同的电子邮件 100 次,看看它失败的次数。

标签: c# .net sockets email smtp


【解决方案1】:

这是 NameCheap 的一个问题,我厌倦了他们的电子邮件服务,他们不会修复它,我的代码在 Gmail 和 Hotmail 上运行良好,但在使用 NameCheap 的 SMTP 服务器时时不时会失败从传输连接读取数据:现有连接被远程主机强行关闭。"

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 2011-12-22
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2013-11-24
    • 2023-04-05
    相关资源
    最近更新 更多