我目前正在编写一个脚本,当受让人的通行证在3个月内到期时,该脚本会向管理员发送电子邮件。但是,我现在处于瓶颈状态,因为电子邮件只发送一封电子邮件而不是每个受让人的预定多个电子邮件。它也应该发送今天+ 3个月的那些(即2013-06-02的到期日将在今天发送,并且只发送一次)。 value在db。中存储为DATE(yyyy-mm-dd)。
我想它可以运行一次我应该使用我的sql检查器,其中sendemail(受限制的db表中的字段)= 0?
我当前的数据存储在一个数组中吗?如果是这样,我需要foreach()将电子邮件发送到符合条件的每个条目?
我的数据库中有近1000个条目,希望上面的代码或修改后的代码不会阻塞服务器,服务器会在办公时间之后运行脚本。
任何专家都可以帮助完善脚本或指出正确的方向吗?任何帮助都很有帮助!!!
由于
(PS.-感谢peterm向我指出了电子邮件首先工作的正确方向,如果不推荐使用mysql_ *,请原谅我。我不知道如何在这个时候使用pdo。一切正常我可能会再次编辑它们以采用pdo进行未来验证)
这就是我现在所拥有的:
/execute the SQL query and return records
$result = mysql_query("SELECT * FROM tbl_lead WHERE pass_expiry = DATE(NOW() + INTERVAL
3 MONTH)");
if (!$result) {
//handle your error
die('The query failed.');
}
//fetch tha data from the database
while ($row = mysql_fetch_array($result))
{
$subject = $row['company_name']."'s"." work pass is expiry soon";
$emailBody = "Company: ".$row['company_name']." \n"."Comment: ".$row['comment']."
\n"."Contact: ".$row['contact']." \n";
}
if(mail($to, $subject, $emailBody, $headers)) {
echo $emailBody;
echo 'Email sent successfully!';
} else {
echo $emailBody;
die('Failure: Email was not sent!');
}
//close the connection
mysql_close($dbhandle);
答案 0 :(得分:0)
首先关闭......除了主键之外,你不应该使用select *,而只选择你需要的列来利用索引:
//execute the SQL query and return records
$result = mysql_query("SELECT comment,company_name,contact FROM tbl_lead WHERE pass_expiry = DATE(NOW() + INTERVAL 3 MONTH)");
您也没有在while循环中设置$to
,这可能会解释为什么您只发送一封电子邮件。