更好的方法是让脚本发送电子邮件到每一行,仅此一次


Better way to have script send email to every row, for once?

我目前正在编写一个脚本,当受让人的通行证在3个月的时间到期时发送电子邮件给管理员。然而,我现在遇到了瓶颈,因为电子邮件只发送了一封电子邮件,而不是每个受让人发送的多封电子邮件。它还应该发送今天+ 3个月(即2013年6月2日到期的将在今天发送,并且只发送一次)。value在db中存储为DATE (yyyy-mm-dd) .

我想它运行一次,我应该有一个检查器与我的sql在哪里sendmail(一个字段在db表的受让人)= 0?

当前数据存储在数组中吗?如果是这样,我需要foreach()将电子邮件发送给满足条件的每个条目?

我的数据库中有近1000个条目,希望上面的代码或修改后的代码不会阻塞服务器,服务器在办公时间后运行脚本。

有没有专家可以帮助我完善剧本或者给我指出正确的方向?任何帮助都是很大的帮助!!

感谢

(PS。-感谢term首先为我指出了正确的电子邮件工作方向& &;如果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);

首先…您不应该使用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,这可能解释了为什么您只发送一封电子邮件。