2016-12-02 133 views
1

我正在使用以下代码通过(PHPMailer)发送电子邮件。将变量传递给PHPMailer get_file_contents

该脚本从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("[email protected]","CareMatch"); 

$mail->SetFrom('[email protected]', '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

取代'的file_get_contents()',而调用解析为标签的模板,并与所要求的内容替换标签的功能。 – Dragos

回答

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); 
... 

的palceholders YOUR-PLACEHOLDER-FIRSTYOUR-PLACEHOLDER-SECOND将被添加到的welcome.php文件

+0

humm,它基于模板框架结构? –

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>