使用 cronjob 触发时收到"邮件程序错误:邮件正文为空"



我正在尝试使用cronjob每周自动发送电子邮件。然而,我收到错误消息";Mailer错误:邮件正文为空;。

对于电子邮件,我使用.html模板。

当我通过调用php脚本的URL来触发它时,它可以完美地工作。但当它被cronjob触发时,它会给我这个信息。

我使用的主机是hostinger,我使用的是他们的内部cronjob系统。

这是我的.php脚本。

use PHPMailerPHPMailerPHPMailer;
require 'vendor/autoload.php';
$msg = file_get_contents('./contact.html'); 
$msg = str_replace('$message', $message, $msg);
$mail = new PHPMailer;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'myusername';
$mail->Password = 'mypassword';
$mail->setFrom('frommail@mail.com', 'frommail');
$mail->addReplyTo('mail@mail.com', 'mail');
$mail->addAddress($username I get from the database, $username I get from the database);
$mail->Subject = 'subject';
$mail->MsgHTML($msg);
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
$response = ["Result" => "error"];
echo json_encode($response);
} else {
$response = ["Result" => "success"];
echo json_encode($response);
}

您的cron作业很可能由与通过web服务器运行时不同的用户运行,并且该用户可能没有读取contact.html文件的所有权或足够的权限。如果msgHTML()失败,它将返回一个空字符串,因此您可以在尝试发送之前进行检查(尽管我注意到您在问题中的脚本中省略了send()调用,并且也没有显示任何错误处理(。

相关内容

  • 没有找到相关文章

最新更新