2012-09-06 3 views
1

Я пытаюсь создать список отправки электронной почты из базы данных mysql, которая будет отправлять только получателю, если это правильный день, я хочу, чтобы индивидуальный адрес электронной почты отправлялся на человека, я могу это сделать нет проблем, если все они находятся в поле . Вот что у меня нетphp email отправить список из базы данных 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 <[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

бежишь код в локальной или в веб-сервере? –

+0

попробовал это на обоих ... – user1652443

ответ

0

При выборе электронной почты массив $ строка будет содержать только $ строки [ «электронный»]

Также попробуйте повторить ответ функции почты и включить сообщения об ошибках на:

error_reporting(-1); 

Вы также будете нуждаться в функционирующий почтовый сервер на системе этот код работает на:

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

1

Вы не ставите «To:» в строка, которая передается как первый параметр в mail().

+0

, когда я вынимаю инструкции «if», код работает отлично, а операторы «if» ничего не работают – user1652443

+0

Ahh .. да по одному из других ответов вы только получаете сообщение по электронной почте с вашего запроса, вы не выбираете поле «период», поэтому не было бы значения в '$ row ['period']' –

1

Вы выбираете только поле email из таблицы, но при создании заголовков почты. В адрес вы пытаетесь получить доступ как к $row['name'], так и к $row['email'].

$row['name'] может давать неопределенное предупреждение об индексе, испортить заголовки и последующую отправку электронной почты.

UPDATE: Я вижу, что вы обновили запрос select * вместо select email. В качестве подсказки, вместо того, чтобы тихо обновлять вопрос, как это, пожалуйста, обновите его комментариями, а также дайте понять, может ли какое-либо из изменений вы помогли/изменили поведение на основе исходного кода.

становится тяжело, когда кто-то смотрит на коде, публикуемом в вопросе и считает, что ответы размещены полностью не связанными с ним ..

+0

Я только что сделал ошибку, когда я разместил ее :( – user1652443

+0

no problemo:) - после 'select *' он все еще не работает? Если не в основном то, что происходит, то 'period' хранится в другом формате в вашей базе данных, чем то, что выведено с использованием' date (N) 'Какое значение имеет значение' $ row ['period'] 'have? – raidenace

0

Вы выбираете «электронную почту» только. $row['period'] пуст, так как он не выбран в вашем запросе. Таким образом, оба варианта являются ложными, поэтому не отправляется электронная почта.

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

Смежные вопросы