3

我想构建一个应用程序,允许我的客户通过电子邮件发送营销信息。这将是一个经过仔细监控的工具,仅用于合法的批量邮寄。它将具有所有必要的“取消订阅”功能等。

该解决方案将使用 VB.NET 构建。

我的问题与实际发送电子邮件的最佳方式有关。我们的数据中心有一个可以使用的 SMTP 服务器。我想我们可以编写某种多线程 Windows 服务来监视要发送的电子邮件数据库,然后调用 System.Net.Mail API 以通过该服务器发送。

这是否会给我在合理的时间范围内向数千名用户发送邮件所需的性能水平?

如果不是,我是否应该考虑在“较低级别”做事,在一个线程中执行 DNS 查找,在另一个线程中的端口 25 上直接发送到相关服务器,等等?

任何指针将不胜感激!


不是一个真正的答案 - 但对于任何感兴趣的人来说都是一个更新......我目前正在查看ActiveUp的一个名为 ActiveMail 的产品。

这似乎是一个 MTA(执行它自己的 MX 查找并直接发送邮件),它带有一个多线程队列应用程序。

4

3 回答 3

3

我认为自己推出这样的东西并不难。建造需要一天左右的时间。但是你应该更好地使用现有的东西。

不过,在使用 Bulk-Email 时,我发现一些重要的事情:

不要使用您自己的 SMTP 发送这些邮件。

查找收件人的 MX 条目并将 SMTPClient 连接到他们的SMTP,这样您就可以在找不到邮箱或其他错误时立即收到错误消息,并且您不会对自己的服务器造成压力。

SmtpClient 中还有一个小错误给我带来了麻烦,因为主机名不是完全限定的域名(按照 SMTP 规范的要求),而是机器名(这是 SmtpClient 中的内部字段)。一些 SMTP 服务器非常重视这一点并想要一个域名,所以我最终将该字段设置为反射到 FQDN。(希望这已经改变了)

于 2008-11-24T11:52:43.813 回答
2

首先得到一个组件来完成繁重的工作。我会推荐:aspnetmail

然后设置群发邮件就像下载一些示例代码一样简单。
WebMailer:从网页发送 1000 封电子邮件而不会超时。

同一供应商还提供 mx 记录检查器/退回邮件检查器等。此解决方案不是免费的,但您节省的时间不追逐标准邮件组件中的错误/不一致将使您值得一试。

哦,如果你想要一个位于桌面上的批量邮件,也提供: http ://www.aspnetemail.com/rapidmailer/

于 2008-11-24T11:05:03.003 回答
1

这个问题不够精确,但无论如何我都会尝试回答。有几个因素限制了您的选择。最好的“方式”真的取决于你的情况。你工作的最后期限是什么?

与您提到的其他选项相比,实施大型、低级、多线程邮件发送系统将花费大量时间。当然,从头开始编写整个事情比使用 SMTP 服务器和 .NET 库发送邮件要优雅得多。

还有不同数据之间的带宽问题。.NET 应用程序和数据库是否会与 SMTP 在同一台服务器上运行?如果不是,带宽管道将如何限制每秒发送的最大邮件数?

就我个人而言,我非常喜欢保持简单。如果时间紧迫,重用可用软件是明智之举。您多久会发送数千封邮件?该间隔将定义时间范围是否合理。它是不是太小了,以至于当另一个版本准备好发送出去时,系统仍然在处理第一个“批次”?

于 2008-11-20T22:43:48.040 回答