2016-05-17 3 views
1

Я пытаюсь запустить хрон, который выполняет следующий PHP код:Godaddy хрон отправляет только одно сообщение

<?php 
require 'public_html/db.php'; 
mysql_query("SET NAMES utf8"); 
$aa = mysql_query("SELECT * from send where sent='0' LIMIT 20"); 

while($rw = mysql_fetch_array($aa)) { 

$id = $rw ['id']; 
$email = $rw ['email']; 
$nick_sent= $rw ['nick']; 
$nick_rw = $rw ['nick_pr']; 

require 'public_html/mailer/PHPMailerAutoload.php'; 

$mail = new PHPMailer; 
$mail->setFrom('[email protected]', 'Email'); 
$mail->addReplyTo('[email protected]', 'Email'); 
$mail->addAddress($email); 
$mail->IsHTML(true); 
$mail->Subject = 'Message'; 

$mail->Body = 'My message'; 

$mail->CharSet = "utf-8"; 
if ($mail->send()) { 

    mysql_query("UPDATE send SET sent = '1' WHERE id='$id'");} 
} 
?> 

Если я получить доступ к файлу непосредственно через браузер, он отлично работает. Однако, если вы запускаете его с помощью задания cron, он будет выполнять только код while ONCE ... что означает, что он вытаскивает первую строку из базы данных MySQL и отправляет ОДИН электронный адрес, когда он должен вытягивать несколько строк и отправлять несколько писем. Можете ли вы, ребята, помочь мне? Благодарю.

+0

Возможно, GoDaddy предотвращает отправку более одного письма изнутри cron? Попробуйте поместить количество строк, возвращенных в вашем электронном письме, чтобы узнать, что на самом деле возвращается запросом. – BillK

+1

может быть наложенным почтовым переводом, предотвращенным вашим поставщиком услуг .ask godaddy – JYoThI

+0

, пожалуйста, используйте require_once вместо требуемого, и вытащите его из цикла –

ответ

1

В соответствии с вашим кодом вы снова и снова инициализируете объект PHPMailer. Пожалуйста, обновите свой код, как показано ниже.

<?php 
require 'public_html/db.php'; 
require 'public_html/mailer/PHPMailerAutoload.php'; 

$mail = new PHPMailer; 
$mail->setFrom('[email protected]', 'Email'); 

mysql_query("SET NAMES utf8"); 
$aa = mysql_query("SELECT * from send where sent='0' LIMIT 20"); 

while($rw = mysql_fetch_array($aa)) 
{ 

$id = $rw ['id']; 
$email = $rw ['email']; 
$nick_sent= $rw ['nick']; 
$nick_rw = $rw ['nick_pr']; 


$mail->addReplyTo('[email protected]', 'Email'); 
$mail->addAddress($email); 
$mail->IsHTML(true); 
$mail->Subject = 'Message'; 

$mail->Body = 'My message'; 

$mail->CharSet = "utf-8"; 
if ($mail->send()) { 

    mysql_query("UPDATE send SET sent = '1' WHERE id='$id'");} 
} 
$mail->clearAddresses(); 
} 
?> 
Смежные вопросы