我需要能够定期向订阅用户发送电子邮件提醒。 PHP似乎很难发送一条消息,所以我正在寻找好的替代方案。
如果实施足够快,任何语言都可以。发送的邮件数量最终将达到数千个。
如果可以避免购买许可软件,那就更好了。
答案 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的命令行工具,您可以轻松下载和发送电子邮件