来自mysql数据库的php电子邮件发送列表

来自mysql数据库的php电子邮件发送列表,php,mysql,Php,Mysql,我正在尝试从mysql数据库创建一个电子邮件发送列表,只有在正确的日期才会发送给接收者,我希望每人发送一封电子邮件,如果他们都在“收件人”字段中,我可以做到这一点。 这是我没有的 <? $freq=date("N"); //get email address's $result = mysql_query("SELECT * FROM email_list "); while($row = mysql_fetch_array($result)) { if($row['peri

我正在尝试从mysql数据库创建一个电子邮件发送列表,只有在正确的日期才会发送给接收者,我希望每人发送一封电子邮件,如果他们都在“收件人”字段中,我可以做到这一点。 这是我没有的

 <?
 $freq=date("N");

//get email address's

$result = mysql_query("SELECT * FROM email_list ");

while($row = mysql_fetch_array($result))
{

 if($row['period']=="daily"){     
 $to="To: ".$row['name']." <".$row['email'].">\r\n";
 $subject="Your exchange rate update";
 $headers  = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .="To: ".$row['name']." <".$row['email'].">\r\n";
 $headers .= "From: ME <me@me.com>" . "\r\n";
 mail($to, $subject, $email, $headers);
 }
 if($row['period']==$freq){
   $to="To: ".$row['name']." <".$row['email'].">\r\n";
 $subject="Your exchange rate update";
 $headers  = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .="To: ".$row['name']." <".$row['email'].">\r\n";
 $headers .= "From: name <me@me.com>" . "\r\n";
 mail($to, $subject, $email, $headers);
     }

}   
 ?>

选择电子邮件时,$row数组将仅包含$row[“email”]

同时尝试回显邮件功能的响应,并打开错误报告:

error_reporting(-1);
您还需要在运行此代码的系统上安装一个正常工作的邮件服务器:


您没有将“To:”放入作为第一个参数传递给
mail()

的字符串中,您只是从表中选择
email
字段,但在生成地址的邮件头时,您试图访问
$row['name']
$row['email']

$row['name']
可能会给出一个未定义的索引警告,弄乱了标题和后续的电子邮件发送

更新:我看到您已将查询更新为
select*
,而不是
select email
。作为提示,不要像这样默默地更新问题,请用注释更新问题,并让员工知道您所做的任何更改是否有助于/改变了基于发布的原始代码的行为

当有人查看问题中发布的代码,发现发布的答案与此完全无关时,这就变得很难了。

您只选择了“电子邮件”<代码>$row['period']
为空,因为在查询中未选中它。因此这两个if都为False,因此不会发送电子邮件。

试试这个

<?
 $freq=date("N");

//get email address's

$result = mysql_query("SELECT * FROM email_list ");

while($row = mysql_fetch_array($result))
{

 if($row['period']=="daily"){     
 $to=$row['name']." <".$row['email'].">\r\n";
 $subject="Your exchange rate update";
 $headers  = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .="To: ".$row['name']." <".$row['email'].">\r\n";
 $headers .= "From: ME <me@me.com>" . "\r\n";
 mail($to, $subject, $email, $headers);
 }
 if($row['period']==$freq){
   $to=$row['name']." <".$row['email'].">\r\n";
 $subject="Your exchange rate update";
 $headers  = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .="To: ".$row['name']." <".$row['email'].">\r\n";
 $headers .= "From: name <me@me.com>" . "\r\n";
 mail($to, $subject, $email, $headers);
     }

}   
 ?>

您是在本地还是在web服务器上运行代码?当我取出“if”语句时,代码工作正常,而“if”语句不起作用。。是的,根据其他答案中的一个,您只是通过查询从数据库检索电子邮件文件,您没有选择“期间”字段,因此,
$row['period']
中没有值。我只是在发布时犯了一个错误:(无问题:)-在
选择*
后,它仍然不工作?如果不是基本上,发生的情况是
期间
在数据库中的存储格式与使用
日期(N)
导出的格式不同
$row['period']
有什么值?