来自mysql数据库的php电子邮件发送列表
我正在尝试从mysql数据库创建一个电子邮件发送列表,只有在正确的日期才会发送给接收者,我希望每人发送一封电子邮件,如果他们都在“收件人”字段中,我可以做到这一点。 这是我没有的来自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
<?
$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']
有什么值?