【发布时间】:2015-05-09 00:08:22
【问题描述】:
如果我有一个填写表格的用户数据库,我可以使用 cron 作业发送自动电子邮件吗?如果是这样,“循环”它以向每个用户发送一次电子邮件的最佳方法是什么?
$data = mysql_query("
SELECT *
FROM completed
WHERE
followupsent='0000-00-00 00:00:00'
AND valuesent + INTERVAL 4 DAY <= NOW()
")
or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
}
这会检查“followupsent”是否已经更新,因为它在发送时会更新为NOW(),还会检查自发送值以来的天数。
我担心将电子邮件发送信息放在 while 标记中会为每一行循环并最终发送大量电子邮件。
将使用和if 代替while:
if($info = mysql_fetch_array( $data ))
{
}
为了发送到数据库中的第一个,然后让 cron 作业通过每分钟检查下一个是哪个来处理其余的?
【问题讨论】:
-
您始终可以发送 单个 封邮件,其中所有收件人都是盲复制的。
-
嗨,嗯,我真的不明白你在一段时间内为每个用户发送电子邮件的问题是什么,同时从你的表中获取值,你不想发送 1000 封电子邮件30秒 ?是的,你可以按照@eggyal 所说的去做
-
@eggyal 从数据库中调用了与每个用户相关的特定详细信息,因此密件抄送在发送相同的电子邮件时不起作用。
-
很公平。那么,正如@user3742755 所问的那样,您对从
while循环中发送单独的电子邮件有什么顾虑? -
@user3742755 我读到,如果您有 500 个用户都在等待电子邮件,则使用 while 循环 CRON 作业将运行,并尝试发送电子邮件,但在更新数据库之前,它再次运行,从而多次发送电子邮件...?