我正在编写一个工具 c#(和 System.Net.Mail),它将发送大约 4000 封电子邮件。
我可以简单地遍历 4000 个电子邮件地址的列表并一次发送一封电子邮件吗?或者这会导致任何潜在的问题吗?
有一个更好的方法吗?
谢谢
我正在编写一个工具 c#(和 System.Net.Mail),它将发送大约 4000 封电子邮件。
我可以简单地遍历 4000 个电子邮件地址的列表并一次发送一封电子邮件吗?或者这会导致任何潜在的问题吗?
有一个更好的方法吗?
谢谢
首先,您必须拥有将 IP 地址映射回域名的rDNS记录。没有它,像 GMail 这样的邮件服务将保留您的电子邮件数小时甚至数天。此外,您可能会在几十封信后被列入黑名单。rDNS 通常可以使用主机的控制面板或通过支持请求进行设置。
其次,不要试图使用您的 ISP 或 GMail 的 SMTP 服务器。您将很快用完每日配额。通常不允许发送超过几十封信(GMail AFAIK 为 50)。因此,要么从您自己的服务器发送邮件,要么使用auth smtp 之类的第 3 方服务。
如果您由于某种原因无法设置 rDNS,此类服务也很有用。
PS 如果您的信件内容正常(即它们实际上不是垃圾邮件)并且 rDNS/SMTP 设置正确,您可以以任何速率发送,而无需暂停。
如果您不打破任何服务器限制,例如内存或磁盘空间,从技术上讲是没有问题的。但是,您将遇到与 ISP 和邮件转发器有关的问题,他们可能会阻止您的域中的垃圾邮件 - 正确或错误..
您可以一次性发送 4000 封电子邮件,但您确实冒着很快被标记为垃圾邮件发送者的风险。
您最好的选择是“突发发送”,因此可能立即发送 100 个,在 10 分钟内再发送 100 个等。
如果您这样做,您就不太可能被视为垃圾邮件发送者。
检查发送邮件的机器是否有有效的 PTR 记录——即,如果您从 IP 为 1.2.3.4 的 www.example.com 发送邮件,则对 1.2.3.4 的 PTR 查询将返回 www.example.com;我也会研究SPF和DKIM。
一些电子邮件主机有传入速率限制(例如 Hotmail 过去曾使用过) - “如果您向我们发送的电子邮件超过 x 封/分钟,您将获得更高的垃圾邮件分数”。我有一个脚本来“搅动队列”,从而降低了单个服务器的每分钟速率。
另外,检查一下——它有很多关于电子邮件内容的好建议,但这有点离题了。
除了上面提到的之外,请务必设置足够的日志记录。
即您应该记录已发送的电子邮件,因此如果您需要重新发送电子邮件,您可以确保不要发送重复邮件。
此外,您可以设置一个应用程序来记录退回的电子邮件并使用它来删除地址等。
您当然可以编写自己的软件或购买一些软件。