以编程方式发送大量电子邮件

时间:2008-10-02 07:31:58

标签: email programming-languages

我需要能够定期向订阅用户发送电子邮件提醒。 PHP似乎很难发送一条消息,所以我正在寻找好的替代方案。

如果实施足够快,任何语言都可以。发送的邮件数量最终将达到数千个。

如果可以避免购买许可软件,那就更好了。

8 个答案:

答案 0 :(得分:2)

Email queueing in php - 简短版本 - Pear的Mail_Queue。我一直用它来发送每天30-50,000多封邮件或更多(每周几天)邮件一年多没有问题。

答案 1 :(得分:1)

我们有各种应用程序写入数据库表中的电子邮件队列,并且.Net Windows服务轮询该表以编写电子邮件并通过我们的邮件服务器发送出去。

我们每分钟最多发送1000封电子邮件......

答案 2 :(得分:1)

对于Java,有http://java.sun.com/products/javamail/ 我在一个应用程序中使用过它。很容易设置和使用。

在Ruby中它非常简单,但我还没有使用它,所以不能说出性能。 http://snippets.dzone.com/posts/show/2362

那说......我怀疑PHP本身发送邮件的速度太慢了。也许你的应用程序有一些瓶颈?

答案 3 :(得分:1)

我想提一下,在我以前的工作中,我们用PHP创建了一个群发的电子邮件解决方案,效果很好,所以我不明白为什么要完全排除它:)

答案 4 :(得分:1)

python中的smtplib是一个轻而易举的设置和一个非常干净的API。

答案 5 :(得分:1)

您可以做的一件事是将问题的重点更改为基础邮件软件。例如,如果我想发送大量电子邮件,我会使用任何语言以BSMTP格式编写它们,这基本上看起来像简单的SMTP客户端命令。类似的东西:

MAIL FROM:<me@example.com>
RCPT TO:<you@example.com>
DATA
From: Me <me@example.com>
To: You <you@example.com>
Subject: test email

This is the body of the test email I'm sending
.

然后我将通过exim:

提供BSMTP文件
cat *.bsmtp | exim -bS

这基本上消除了从您的程序发送电子邮件的延迟,并将负担放在exim上(作为MTA可以更好地处理它)。

一旦掌握了基础知识,就可以修改大量内容以提高效率。例如,如果您的电子邮件未自定义,则可以通过将所有收件人置于同一个域中进行相同的BSMTP文件进行预优化:

MAIL FROM:<me@example.com>
RCPT TO:<you@example.com>
RCPT TO:<him@example.com>
RCPT TO:<her@example.com>
RCPT TO:<them@example.com>
DATA
From: Me <me@example.com>
To: Me <me@example.com>
Subject: test email

This is the body of the test email I'm sending
.

您还可以在如何优化MTA本身以发送邮件方面获得大量的摆动空间(例如,它将自动处理并行交付,通过相同的TCP连接将电子邮件发送到同一邮件服务器,等等)。

关于在代码中执行它,我们曾经有一个perl库,它帮助我们完成这些工作。基本上你给它提供了电子邮件和地址,它会根据需要分叉对邮件服务器的调用。它可以配置允许的并行会话数,并且还监视服务器上的负载,如果负载超过用户可配置的阈值,则会减速。

答案 6 :(得分:0)

我使用名为e-Campaign的程序读取CSV文件。如果你必须以编程方式进行,那么你可能想要构建一个等待技术,这样你就不会尝试一次发送10,000封电子邮件。通过电子广告系列,您可以选择一次发送多少封电子邮件,并在这些批次之间设置休息时间。它仍然非常快,但不会导致服务器出现过载问题。

答案 7 :(得分:-2)

有一个名为blat的基于dos的命令行工具,您可以轻松下载和发送电子邮件