Php 让脚本向每一行发送一次电子邮件的更好方法?

Php 让脚本向每一行发送一次电子邮件的更好方法?,php,arrays,email,foreach,Php,Arrays,Email,Foreach,我目前正在写一个脚本,当受让人的通行证在3个月后到期时,它会向管理员发送电子邮件。然而,我现在遇到了瓶颈,因为电子邮件只发送一封电子邮件,而不是每个被派遣人想要发送的多封电子邮件。它还应发送今天+3个月的邮件(即2013-06-02到期的邮件将在今天发送,并且只发送一次)。值存储为日期(yyyy-mm-dd),单位为db 我想为了让它运行一次,我应该有一个带有sql的检查程序,其中sendemail(数据库表中的一个字段,用于受让人)=0 我的当前数据存储是否在阵列中?如果是这样,我需要fore

我目前正在写一个脚本,当受让人的通行证在3个月后到期时,它会向管理员发送电子邮件。然而,我现在遇到了瓶颈,因为电子邮件只发送一封电子邮件,而不是每个被派遣人想要发送的多封电子邮件。它还应发送今天+3个月的邮件(即2013-06-02到期的邮件将在今天发送,并且只发送一次)。值存储为日期(yyyy-mm-dd),单位为db

我想为了让它运行一次,我应该有一个带有sql的检查程序,其中sendemail(数据库表中的一个字段,用于受让人)=0

我的当前数据存储是否在阵列中?如果是这样,我需要foreach()将电子邮件发送到每个符合条件的条目

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

任何专家都可以帮助完善脚本或为我指出正确的方向?任何帮助都是巨大的帮助

谢谢

(附言-感谢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);

首先。。。您不应使用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循环中将
$设置为
,这可能会解释为什么您只发送一封电子邮件。

您好,hd1,当前我的$to设置为一个修复电子邮件地址,该地址是管理员的总地址。共有5名管理员,每个管理员负责自己的条目。他们的电子邮件可以存储在每个条目中。因此,您需要为每行向管理员发送单独的电子邮件?是的,假设管理员A和管理员B各有10个条目,其中5个即将过期。超过5封分别发送给各自管理员的电子邮件。