Я использую PHPMailer для отправки электронных писем и, естественно, я использую шаблоны для этого на основе переменных условий. однако мне нужно иметь возможность использовать PHP в самом шаблоне перед отправкой. у меня есть несколько массивов, которые мне нужно перебрать в списки HTML, и массивы всегда различаются в зависимости от обстоятельств.
// all variables are pulled from the $_POST array
$list = $_POST['listArray'];
$numberOfDays = $_POST['numberOfDays']; // 90
... and more
// create the instance
$mail = new PHPMailer;
// $mail->isSMTP(); // requires commenting out to work... don't know why yet...
$mail->SMTPSecure = 'tls';
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
// host server (using Mailhog for testing)
$mail->Host = '127.0.0.1';
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = EMAILUSERNAME;
$mail->Password = EMAILPASSWORD;
$mail->setFrom($fromEmail, $fromName);
$mail->addReplyTo('blarg@blarg.blarg');
$mail->addAddress($to);
$mail->Subject = $subject;
$mail->Body = file_get_contents(__DIR__.'\${numberOfDays}days.php'); // 90days.php
// send the email and check for errors
if (!$mail->send()) {
echo 'Mail error: '. $mail->ErrorInfo;
} else {
echo 'Message sent Successfully';
}
это файл 90days.php
:
<p>As a result of our inspections at <?php echo $bldgName; ?>,
the following code violations have been identified:</p>
<?php foreach ($list as $key => $value) {
echo '<ul>';
foreach ($value as $vkey => $vvalue) {
echo '<li>'.$vvalue.'</li>';
}
echo '</ul>';
} ?>
<p>As this is an email regarding these deficiencies, you now have</p>
<h1><?php echo $numberOfDays ?></h1>
<p>When responding, please use the following in your subject line:</p>
<h2> <?php echo $subjectLine; ?> </h2>
<p>Thank you for your prompt attention to these matters.</p>
, что появляется в моем почтовом ящике, это просто обычный текст HTML / PHP. PHP переменные не оцениваются. когда я запускаю file_get_contents()
, я ожидал, что PHP будет оценен, когда он вошел, как include
. если я изменю $mail->Body
на $mail->msgHTML
, то же самое соглашение, но, по крайней мере, оно будет заключено в HTML, а не в обычный текст HTML.
так! как получить PHP для оценки в этом шаблоне, когда он введен в объект PHPMailer?