通过 cronjob/php、RHEL 发送邮件

通过 cronjob/php、RHEL 发送邮件

我正在尝试使用 php 脚本通过 cronjob 发送电子邮件。脚本本身在 shell 中执行时运行良好。当由 cron 运行时,附件丢失。

操作系统是 RHEL 7

Cron条目:

30 4 1 * * user /usr/bin/php /path/sendmail.php >/dev/null 2>&1

crontab中的用户与shell用户相同

剧本 :

<?php 
require '/usr/share/php/PHPMailer/PHPMailerAutoload.php';
$msg = "";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host       = "mail.domain.com"; 
$mail->SMTPOptions = array(
  'ssl' => array(
  'verify_peer' => false,
  'verify_peer_name' => false,
  'allow_self_signed' => true
  )
);
$mail->SMTPDebug  = 0;                     
$mail->do_debug = SMTP::DEBUG_CONNECTION;
$mail->SMTPAuth   = true;                  
$mail->Port       = 25;                    
$mail->Username   = "SMTP-User"; 
$mail->Password   = 'SMTP-pass';        
$mail->setFrom('[email protected]', '');
$mail->addAddress('[email protected]', '');
$mail->Subject = 'Domains';
$mail->Body = 'Attachment : domain2.csv';
// Attach the uploaded file
$mail->addAttachment("domain2.csv", 'domain2.csv');
if (!$mail->send()) {
$msg .= "Mailer Error: " . $mail->ErrorInfo;
} else {
$msg .= "Message sent!";
}
?>

不太复杂。

有人能告诉我如何修复这个问题吗?我认为这又是 SELinux 设置问题之一。

蒂娅·韦恩

答案1

尝试使用绝对路径而不是相对路径,因为 cron 从不同的上下文运行

$mail->addAttachment(dirname(__FILE__)."/domain2.csv", 'domain2.csv');

相关内容