PhpMailer:如何将数组从phpmailer传递到模板

时间:2015-12-18 22:52:20

标签: php phpmailer

我正在尝试传递来自数据库的数组,并使用phpMailer将它们循环到电子邮件模板中。 使用以下脚本,我可以传递单个变量并在模板中打印:

$message = file_get_contents('template.php');
$message = str_replace('%lname%', $lname, $message);

// Setup PHPMailer
   $mail = new PHPMailer();
   $mail->IsSMTP();

  $mail->SetFrom('info@mywebsite.com','mywebsite.com'); 
  $mail->AddAddress('r.user@gmail.com');


  $mail->Subject = 'New message'; 
  $mail->MsgHTML($message);

  if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
  }  

现在我想将来自数据库的数组传递给相关模板。

我如何通过它们?

2 个答案:

答案 0 :(得分:1)

您可以使用简单的渲染功能

function render($template, $data )
{
    extract($data);
    ob_start();
    include( $template  );
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}

$body = render(__DIR__.'/template.php' , ['first' => 'This is first line' , 'second' => 'this is second line']);

的template.php

<table>
<tr>
    <td><?=$first ?></td>
</tr>
<tr>
    <td><?=$second ?></td>
</tr>

然后发送消息

        $mail = new PHPMailer;
        $mail->CharSet = "UTF-8";
        $mail->setFrom( $from, 'Mailer');
        $mail->addAddress($to);
        $mail->isHTML(true);

        $mail->Subject = $subject;
        $mail->Body    = $body;

        $mail->send();

答案 1 :(得分:0)

您可以根据需要为任意数量的代码重复此过程,但请注意,有几个搜索&amp;替换PHP中的函数,如接受数组的str_replace,这样你就可以一次做很多。

如果你想变得更复杂,你可以使用像Smarty或Twig这样的模板引擎。

总体而言,这与PHPMailer无关 - 它只会发送您生成的任何内容,这是完全独立的事情。