제출 마감일이 가까워지면 CRON 작업을 사용하여 사용자에게 이메일 알림을 보내고 있습니다. 그런데 간단한 이메일을 먼저 보내서 테스트하려고 (CRON) info (No MTA installed, discarding output)
하면 syslog
. 하지만 URL을 사용하여 PHP 스크립트를 실행하면 나에게 이메일을 보낼 수 있습니다.
제 질문은, PHPMailer로 이메일을 보내려면 CRON Job을 실행할 때 웹 서버에 MTA를 설치해야 합니까?입니다.
이것은 내 crontab
코드입니다.
* * * * * /var/www/html/test.php (cmd1; cmd2) 2>&1 | logger -t mycmd
그리고 이것은 내 test.php
코드입니다:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '/usr/share/php/libphp-phpmailer/src/Exception.php';
require '/usr/share/php/libphp-phpmailer/src/PHPMailer.php';
require '/usr/share/php/libphp-phpmailer/src/SMTP.php';
require '/usr/share/php/libphp-phpmailer/autoload.php';
// Set the script time zone to UTC
date_default_timezone_set('Etc/UTC');
function sendMail($email, $message, $subject) {
$mail = new PHPMailer();
// set up for the SMTP and used account
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'password';
$mail->Port = 587;
// Disable some SSL check
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
// sender, recipient, reply-to etc
$mail->SetFrom('[email protected]', 'Reply-to');
$mail->addAddress("$email");
$mail->IsHTML(true);
// email contains
$mail->Subject = "$subject";
$mail->Body = $message;
// send email
$mail->send();
}
sendMail("[email protected]", "Hello World!", "Test");
?>