2012-09-06 108 views
1

我想创建一个电子邮件发送列表从一个MySQL数据库,只会发送到recieptant如果是正确的一天,我想每个人发送一封邮件,我可以做到这一点如果他们都在"To: "字段中,则没有问题。 这是我没有从MySQL数据库的PHP电子邮件发送列表

<? 
$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 <[email protected]>" . "\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 <[email protected]>" . "\r\n"; 
mail($to, $subject, $email, $headers); 
    } 

} 
?> 

没有电子邮件的发送和收到任何错误消息。

+0

你运行该代码在本地或Web服务器? –

+0

在两个... – user1652443

回答

0

当您选择发送电子邮件至$ row数组将只包含$行[“电子邮件”]

也可以尝试呼应邮件功能的响应,并把错误报告上:

error_reporting(-1); 

你也将需要在系统上运行的邮件服务器这段代码上运行:

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

1

你不把“为:”成作为第一个参数传递给mail()的字符串。

+0

上试了一下,当我拿出“if”语句时,代码完美无缺,“if”语句没有任何效果 – user1652443

+0

Ahh ..是其他答案中的一个,你只是检索电子邮件从数据库提交您的查询,你没有选择'期限'字段,所以'$ row ['period']' –

1

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

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

UPDATE:我看到您已将查询更新为select *而不是select email。作为一个提示,不要像这样静静地更新问题,而是要用评论来更新它,并且让别人知道你做的任何改变是否帮助/改变了基于发布的原始代码的行为。

当有人看着张贴在问题的代码并发现答案贴是完全不相关的它变得坚硬..

+0

我没有任何价值我只是犯了错误,当我发布它:( – user1652443

+0

没有问题: ) - 在'select *'之后它仍然不工作?如果不是基本上发生了什么,'period'在数据库中的存储格式与使用date(N)派生的格式不同''$是什么值行['period']'有吗? – raidenace

0

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

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 <[email protected]>" . "\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 <[email protected]>" . "\r\n"; 
mail($to, $subject, $email, $headers); 
    } 

} 
?> 
+0

试过这个并且完美地工作! – user1652443