2012-09-06 127 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