Godaddy cron作业只发送一封电子邮件


Godaddy cron job sends only one email

我正在尝试运行一个执行以下PHP代码的cron作业:

<?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('info@mymail.com', 'Email');
$mail->addReplyTo('info@mymail.com', '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代码一次。。。这意味着它只从MySQL数据库中提取第一行并发送一封电子邮件,而它应该提取多行并发送多封电子邮件。你们能帮我吗?谢谢

根据您的代码,您正在一次又一次地初始化PHPMailer对象。请按照以下内容更新您的代码。

<?php
require 'public_html/db.php';
require 'public_html/mailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('info@mymail.com', '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('info@mymail.com', '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();
}
?>