【发布时间】:2011-08-13 02:00:18
【问题描述】:
我正在使用 Gmail SMTP 服务器从 VB.Net 发送邮件。尽管它可以正常发送一些电子邮件,但对于其他一些电子邮件,它会返回以下错误:
发送邮件失败。无法将数据写入传输连接 System.Net.Sockets.SocketException:已建立的连接被主机中的软件中止
【问题讨论】:
-
失败的邮箱地址是否有效?
我正在使用 Gmail SMTP 服务器从 VB.Net 发送邮件。尽管它可以正常发送一些电子邮件,但对于其他一些电子邮件,它会返回以下错误:
发送邮件失败。无法将数据写入传输连接 System.Net.Sockets.SocketException:已建立的连接被主机中的软件中止
【问题讨论】:
我最近遇到了同样的问题,SmtpClient.SendMail(MailMessage) 被重复用于带有 350k 附件的电子邮件。每 33 条消息,就会出现你给出的错误。
原来我们封装了 SendMail 功能的共享组件在消息发送完成时没有在 SmtpClient 类上调用 Dispose()。
将client.Dispose() 添加到 SmtpClient 实例立即解决了问题,现在消息发出没有问题 - 数百条(是的,它们是发送给我们客户的合法产品通知,而不是垃圾邮件);)
【讨论】:
using 块的时间。 ;-)
根据我在网上看到的,与此异常相关的 Winsock 错误代码是 WSAECONNABORTED。
你可以在这个地址阅读更多关于它的解释:WSAECONNABORTED
基本上这意味着当您的应用程序尝试发送大型电子邮件时服务器关闭了连接。
也许您应该查看 Gmail 文档,看看它是否对邮件大小或发送的邮件总数有一些限制。看起来您在套接字上发送了太多数据。
【讨论】:
SmtpClient 和 WASECONNABORTED 时,此问答会在 Google 中弹出。所以......也感谢您的回答。 :-)