将变量传递给PHPMailer get_file_contents

时间:2016-12-02 14:48:59

标签: php

我使用以下代码通过(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!";
}

2 个答案:

答案 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-FIRSTYOUR-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>