我使用以下代码通过(PHPMailer)发送电子邮件。
脚本从welcome.php(电子邮件模板)获取文件内容,如何将变量传递给模板?所以我可以自定义电子邮件模板。
// SEND EMAIL NOTIFICATION TO USER
$mail = new PHPMailer();
$body = file_get_contents('emails/templates/carer/welcome.php');
$body = eregi_replace("[\]",'',$body);
$mail->AddReplyTo("support@carematch.org.uk","CareMatch");
$mail->SetFrom('noreply@carematch.org.uk', 'Carematch');
$address = $_POST['email'];
$name = $_POST['firstname'] . $_POST['lastname'];
$mail->AddAddress($address, $name);
$mail->Subject = "Welcome to CareMatch";
$mail->AltBody = "We have assigned you a unique ID and generated you a password."; // optional, comment out and test
$mail->MsgHTML($body);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
答案 0 :(得分:1)
您可以做的一种方法是,您可以在 welcome.php 中添加占位符,并在使用str_replace()函数获取内容后将这些占位符替换为实际值,例如:
...
$searchArr = ["YOUR-PLACEHOLDER-FIRST", "YOUR-PLACEHOLDER-SECOND"];
$replaceArr = [$yourFirstVariable, $yourSecondVariable]
$body = file_get_contents('emails/templates/carer/welcome.php');
$body = str_replace($searchArr, $replaceArr, $body);
...
赞助商YOUR-PLACEHOLDER-FIRST
和YOUR-PLACEHOLDER-SECOND
将添加到 welcome.php 文件
答案 1 :(得分:1)
这是我经常使用的一个函数,它给我使用PHP输出缓冲区来捕获渲染模板的PHP模板。
与使用任何类型的查找和替换方法的静态数组占位符相比,它提供了更大的灵活性。
function loadTemplate($template, array $properties = array()){
$output = "";
if (file_exists($template)) {
extract($properties);
ob_start();
require($template);
$output = ob_get_contents();
ob_end_clean();
}
return $output;
}
$data = [
"foo" => "bar"
];
$message = loadTemplate("/path/to/email.phtml", $data); // <p>bar</p>
email.phtml
<p><?php echo $foo; ?></p>