PHPMailer: как я могу получить PHP код для оценки в моих шаблонах? - PullRequest
0 голосов
/ 16 апреля 2020

Я использую 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?

...