1

我正在尝试从 mysql 数据库创建一个电子邮件发送列表,该列表仅在正确的日期发送给收件人,我希望每人发送一封单独​​的电子邮件,如果他们都在"To: "现场,我可以做到这一点。这是我没有的

 <?
 $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);
     }

}   
 ?>

不会发送电子邮件,也不会收到错误消息。

4

5 回答 5

1

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

于 2012-09-06T15:22:57.443 回答
1

您只是email从表中选择字段,但在生成邮件标题时,您正在尝试访问$row['name']$row['email']

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

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

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

于 2012-09-06T15:23:06.707 回答
0

当您选择电子邮件时,$row 数组将仅包含 $row["email"]

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

error_reporting(-1);

您还需要在运行此代码的系统上运行正常的邮件服务器:

http://php.net/manual/en/function.mail.php

于 2012-09-06T15:22:13.670 回答
0

您只选择“电子邮件”。$row['period']为空,因为它未在您的查询中选择。所以两个 if 都是 False,因此不发送电子邮件。

于 2012-09-06T15:23:09.343 回答
0

尝试这个

<?
 $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);
     }

}   
 ?>
于 2012-09-06T15:24:53.047 回答