我正在尝试传递来自数据库的数组,并使用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;
}
现在我想将来自数据库的数组传递给相关模板。
我如何通过它们?
答案 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无关 - 它只会发送您生成的任何内容,这是完全独立的事情。