我的第一个CRON作业出错...... [包含错误信息]

时间:2013-01-21 20:23:34

标签: php cron mysqli cpanel hostmonster

我在运行cron工作时遇到一些问题。我已创建此脚本以帮助我自动发送电子邮件公告如果数据库中的日期与今天的日期匹配,ELSE它将向管理员发送电子邮件,以通知他们没有发送公告。我已经检查过所有电子邮件以及电子邮件组收件箱,并且没有收到任何电子邮件。下面写的脚本,然后是cron作业运行时收到的电子邮件错误。提前致谢!     

//Set variable which contains the query to the database
$userbcc = $connection->prepare("SELECT email FROM users ORDER BY email ASC") or die("could not connect");

//Execute the query through MySQLi
$userbcc->execute();

//Stores the number for counting
$userbcc->store_result();

//Bind results to their variables
$userbcc->bind_result($email);

//While results 
while ($userbcc->fetch()) {
    $userlist .= $email . ",";
}

//Count the rows
$user_rows = $userbcc->num_rows;

$userbcc->close();


//Set and sanitize the variable which contains perameter
$today = date("Y-m-d 00:00:00");

//Set variable which contains the query to the database
$mailpromo = $connection->prepare("SELECT id,venid,title,intro,body,sdate,edate FROM venpromo WHERE `sdate` =  ?") or die("could not connect");

//Set the query 'WHERE state = ?' to the query
$mailpromo->bind_param("s",$today);

//Execute the query through MySQLi
$mailpromo->execute();

$mailpromo->store_result();

//Bind results to their variables
$mailpromo->bind_result($id,$venid,$title,$intro,$body,$sdate,$edate);

$ad_rows = $mailpromo->num_rows;

//While results 
while ($mailpromo->fetch()) {
    $to = "[EMAIL ADDRESS]";
    $from = "[EMAIL ADDRESS]";
    $subject = "A New Promo Starts Today! \"$title\"";
    $message = "MESSAGE";
        $headers = "From: Norris Portal Intranet System <[EMAIL ADDRESS]>\r\n";
    $headers .= "Reply-To: ". strip_tags($from) . "\r\n";
    $headers .= "BCC: " . substr($userlist, 0, -1) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    if ($from != "" && $to != "" && $subject != "" && $message != "") {
        if (mail($to, $subject, $message, $headers)) {
            $mailsuccess = 1;
        } else {
            $mailfail = "1";
        }
    } else {
        $mailfail = "1";
    }
}

$mailpromo->close();


if ($ad_rows == 0) {
    $to = "[EMAIL ADDRESS]";
    $from = "[EMAIL ADDRESS]";
    $subject = "There were no promo's pulled from today's bulletin.";
    $message = "There were no promo's emailed to the staff today. Only promo's with a start day of today will be emailed to the staff.";
    $headers = "From: Norris Portal Intranet System <[EMAIL ADDRESS]>\r\n";
    $headers .= "Reply-To: ". strip_tags($from) . "\r\n";
    $headers .= "BCC: [EMAIL ADDRESS]\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    if ($from != "" && $to != "" && $subject != "" && $message != "") { 
        if (mail($to, $subject, $message, $headers)) { 
            $mailsuccess = 1;
        } else {
            $mailfail = "1";
        }
    } else {
        $mailfail = "1";
    }
}

?>

错误电子邮件:

220-host238.hostmonster.com ESMTP Exim 4.80 #2 Mon, 21 Jan 2013 13:10:02 -0700 
220-We do not authorize the use of this system to transport unsolicited, 
220 and/or bulk e-mail.
250-host238.hostmonster.com Hello localhost.localdomain [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
250-host238.hostmonster.com Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
250 OK
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
250 Accepted
550 No Such User Here"

1 个答案:

答案 0 :(得分:0)

我重写了我的代码,这很有效......解决方案是首先提取内容并使用while循环逐个发送内容,而不是将所有电子邮件添加到BCC:list ...     

//Set variable which contains the query to the database
$mailpromo = $connection->prepare("SELECT id,venid,title,intro,body,sdate,edate FROM venpromo WHERE `sdate` =  ?") or die("could not connect");

//Set the query 'WHERE state = ?' to the query
$mailpromo->bind_param("s",$today);

//Execute the query through MySQLi
$mailpromo->execute();

//Stores the number for counting
$mailpromo->store_result();

//Bind results to their variables
$mailpromo->bind_result($id,$venid,$title,$intro,$body,$sdate,$edate);

//Bind results to their variables
$mailpromo->fetch();

//Count the number of bulletins today
$mail_count = $mailpromo->num_rows;

//Close the session
$mailpromo->close();



//Set variable which contains the query to the database
$userbcc = $connection->prepare("SELECT email FROM users") or die("could not connect");

//Execute the query through MySQLi
$userbcc->execute();

//Stores the number for counting
$userbcc->store_result();

//Bind results to their variables
$userbcc->bind_result($email);

//While results 
while ($userbcc->fetch()) {


    $to = $email;
    $from = "[email held]";
    $subject = "A New Promo Starts Today! \"$title\"";
    $message = "[content held]"

    $headers = "From: [email held] \r\n";
    $headers .= "Reply-To: ". strip_tags($from) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    if ($from != "" && $to != "" && $subject != "" && $message != "") {
        if (mail($to, $subject, $message, $headers)) {
            $mailsuccess = 1;
        } else {
            $mailfail = "1";
        }
    } else {
        $mailfail = "1";
    }




}

//Close the session
$userbcc->close();


if ($mail_count == 0) {
    $to = "[email held]";
    $from = "[email held]";
    $subject = "There were no promo's pulled from today's bulletin.";
    $message = "There were no promo's emailed to the staff today. Only promo's with a start day of today will be emailed to the staff.";
    $headers = "[email held]\r\n";
    $headers .= "Reply-To: ". strip_tags($from) . "\r\n";
    $headers .= "BCC: [email held]\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    if ($from != "" && $to != "" && $subject != "" && $message != "") { 
        if (mail($to, $subject, $message, $headers)) { 
            $mailsuccess = 1;
        } else {
            $mailfail = "1";
        }
    } else {
        $mailfail = "1";
    }
}

?>