PHP Sendmail - Использование HTML Mail с переменной PHP - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь отправлять HTML-сообщения каждый раз, когда пользователь публикует работу в нашем приложении.

Ниже приведена наша функция php, которая принимает параметр 'job_title', который мы хотим включить в отправляемое сообщение HTML:

require('phpmailer/PHPMailer.php');
require('phpmailer/Exception.php');
require('phpmailer/SMTP.php');
require('phpmailer/POP3.php');
require('phpmailer/OAuth.php');

function sendJobPostedEmail($to, $job_title) {

$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host       = 'smtp.gmail.com';
$mail->Port       = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth   = true;
$mail->Username   = 'xxxxxx';
$mail->Password   = 'xxxxxx';
$mail->SetFrom('xxxxxx', 'xxxxxx');
$mail->addAddress($to, 'ToEmail');
$mail->IsHTML(true);

$mail->Subject = 'Your job has been posted!';
$mail->Body    = file_get_contents("jobposted-email.php");

$mail->send();

return true;

}

Вот фрагмент HTML-кода из отправленного электронного письма:

<p class="lead tm"><?php echo $job_title; ?></p>

Письмо отправлено нормально, однако переменная $ job_title не печатается. Почему моя переменная не передается во включенный файл 'jobposted_email.php'?

1 Ответ

0 голосов
/ 09 мая 2018

Попробуйте поместить ob_start (); перед функцией почты, а затем используйте , включая 'jobposted-email.php';

После этого сохраните содержимое в $ body = ob_get_contents (); Когда электронное письмо отправлено, выполните ob_end_Clean ();

Пример использования вашего кода. Дайте мне знать, если это поможет:

require('phpmailer/PHPMailer.php');
require('phpmailer/Exception.php');
require('phpmailer/SMTP.php');
require('phpmailer/POP3.php');
require('phpmailer/OAuth.php');

ob_start();
include 'jobposted-email.php';
$body = ob_get_contents();

function sendJobPostedEmail($to, $job_title) {

$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host       = 'smtp.gmail.com';
$mail->Port       = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth   = true;
$mail->Username   = 'xxxxxx';
$mail->Password   = 'xxxxxx';
$mail->SetFrom('xxxxxx', 'xxxxxx');
$mail->addAddress($to, 'ToEmail');
$mail->IsHTML(true);

$mail->Subject = 'Your job has been posted!';
$mail->Body    = $body;

$mail->send();

ob_end_Clean();

return true;

}
...