Search code examples
phpcronmysqlicpanelhostmonster

Error On My First CRON Job... [Error Message Included]


I'm having a little issue running a cron job. I've created this script to help me automatically send out an email bulletin IF the date in the database matches todays date, ELSE it will send an email to administrators in order to inform them that there was no bulletin sent. I've checked to see that all of the emails existed, as well as the email group inbox, and there were no emails received. The script written in below, followed by the email error I get when the cron job runs. Thanks in advance!

//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";
    }
}

?>

ERROR EMAIL:

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"

Solution

  • I rewrote my code and this worked... The solution was to pull the content first and use a while loop to email the content one-by-one instead of add all emails to a 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";
        }
    }
    
    ?>