自动邮件列表 - PHP

时间:2009-02-19 16:32:48

标签: php email

我在我的网站上有一个应用程序,人们可以注册接收新闻通讯,然后付费小组中的某个人可以立即写信给每个注册的人...

...这意味着我需要一种有效的方式来遍历我的订阅者数据库并使用php将其邮寄给他们。

显然,有mail()函数....我可以把它放在一个循环中...有更好的方法吗?

5 个答案:

答案 0 :(得分:3)

PEAR mail queue

  

Mail_Queue类将邮件放入   临时容器,等待喂食   到MTA(邮件传输代理),和   稍后发送它们(例如某个   邮件数量每隔几分钟)   crontab或以其他方式。

答案 1 :(得分:3)

您可以使用BCC标头选项并发送一封包含所有订阅者的Blind Carbon Copy列表的电子邮件。 因此,在循环中构建BCC字符串并使用mail()

发送一封电子邮件

PHP手册中的片段......

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

用$ mySubscribersList

替换'Bcc:birthdaycheck@example.com'

答案 2 :(得分:1)

我建议找到一种循环方式,并记住你已经邮寄过的人,因为如果它成为一个大的人员列表,你的脚本可能会结束,你必须重新加载它。

我使用AJAX做过一次,给了我很好的方法来跟踪我在发送过程中的位置。计算了多少人邮寄,把id放在一个数组中,有javascript循环并单独调用php-mail-page ...

CNC中 您可以在php中使用简单的while循环创建脚本,但是您应该在数据库中添加一个检查以查看是否已将邮件发送给一个人。如果脚本超出内存使用量,只需重新加载页面,它只会发送给那些尚未收到它的页面...

答案 3 :(得分:1)

关于@ paulbm的回答,为什么不在服务器上创建指向所有当前电子邮件地址的别名?一个简短的procmail脚本可以阻止除一个授权发件人以外的任何人使用别名。

它使邮件变得简单,并且使用新的/更改的电子邮件地址重建列表也非常简单。

答案 4 :(得分:0)

如果您需要功能齐全的新闻通讯和邮件列表管理器,请尝试使用phplist(Homepage