2015-04-17 4 views
0

Выполняется мое задание cron, но не отправляется электронное письмо.Cron job не отправляет почту

/usr/bin/php -f /home/user/public_html/test/cron/checklist.php task=client 

результат = OK

<?php 
//get parameter from URL 
$argv = $_SERVER['argv']; 
$task = explode("=", $argv[1]); 
?> 

результат = OK

Усложнение начать здесь!

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo.'<br>'; 
} else { 
    echo "Message sent!<br>"; 
} 

В нем говорится: «Сообщение отправлено!» но не отправляется электронное письмо! Когда я запускаю его с веб-страницы в качестве теста, он работает и отправляет почту

Я использую phpmailer для отправки.

+0

Проверьте журналы почтового сервера. – Synchro

+0

Команда 'mail' будет выполняться без ошибок (обычно), однако, если вы не используете почту SMTP, ваши отправленные сообщения, вероятно, будут либо заблокированы ISP, либо фильтруются с помощью спама. Получатели проверили свои спам-папки? http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm –

+0

Спасибо за ваш ответ ... Я проверил его и не стал писать в журналы – Brolosse

ответ

0

Попробуйте /usr/bin/php -f /home/user/public_html/test/cron/checklist.php client

Кроме того, в вашем PHP коде, различие между обработкой веб-сервером и обработкой командной строки. Вот пример:

if (php_sapi_name() == 'cli') { 
    echo "this is command line"; 
    $task = $argv[1]; 
} else { 
    echo "run from a web server"; 
    $argv = $_SERVER['argv']; 
    $task = explode("=", $argv[1]); 
} 
echo "\n task ="; 
echo $task; 
+0

Конечно, убедитесь, что у argv есть необходимое количество элементов, с 'isset' вместе с try и catch, если вы этого еще не сделали. –