gpt4 book ai didi

c# - 通过 C# 网页发送大量电子邮件的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-30 15:46:23 25 4
gpt4 key购买 nike

我有一个项目的一部分,我需要从一个网页发送 1 到 2000 封电子邮件。一个开源错误跟踪器使用 Thread 发送电子邮件,但它充满了错误。

所以只想知道是否有人对我如何创建一个一次最多发送 2000 封电子邮件的过程有任何想法?

我的一位同事告诉我将其保留为一个过程(一次发送一封电子邮件的正常例行程序),因为无论如何处理所有电子邮件都不会花费很长时间。似乎不对,我想使用线程...也许我喜欢复杂的例程?

[额外]我有类似的东西:foreach(电子邮件地址中的字符串电子邮件){MailMessage mailMessage = new MailMessage();mailMessage.To.Add(...)...SmtpClient client = new SmtpClient();client.Send(mailMessage);

最佳答案

使用System.Net.Mail 发送消息;但是,您应该使用 .NET 4 来避免任何连接问题,因为 Connect 网站上存在一个错误,会导致您的消息无法发送。

不要使用线程的三个原因:

原因1:MTA是用来处理邮件重试的,可以处理失败。您的代码可能不够健壮,无法处理此问题。 System.Net.Mail 无法开箱即用。

原因 2:如果您确实使用线程,您将淹没目标 SMTP 服务器并阻止您。大多数 Windows SMTP 中继默认阻止超过 15(或 25?)个并发连接。

如果您使用的是 Exchange 2010 或 2007,那么如果您每分钟发送的邮件超过 x 条,就会激活一个限制功能。这是每个 MTA 设置,需要根据您的情况进行调整。

原因 3:执行此操作的首选方法是使用专用 IIS SMTP 服务器(或 Exchange...),以允许大量并发连接。只需使用 Sys.Net.Mail 将投递任务交给邮件基础架构即可。邮件基础设施不需要太多。只需拥有一个允许您进行中继的 MTA,它就会代表您“智能托管”到 Internet。

有关如何设置 MTA 的更多问题可以在@serverfault 中回答。

但是

如果您从 ASP.NET 网页发送电子邮件,您可能需要使用线程……否则会阻塞 UI。除此之外,我认为不需要为电子邮件生成任务运行并发线程。

最后,如果您要将同一封邮件发送给许多收件人,您可以使用通讯组列表或将许多目标收件人附加到同一封邮件。

关于c# - 通过 C# 网页发送大量电子邮件的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com