2011-10-27 51 views
2

可能重複:
Problem when loading php file into variable (Load result of php code instead of the code as a string)PHP郵件使用模板

我對下面的有點糊塗了......

信息提示功能

public static function MsgAlert($email, $name, $subject, $message) 
{ 
    $msg = include('mailer.php'); 

    $subject = 'New Message'; 

    if ($email != '' && validate_email($email)) 
    { 
     $mailer = new PHPMailer(); 

     $mailer->SetFrom(ADMIN_EMAIL, SITE_NAME); 
     $mailer->AddAddress($email); 
     $mailer->Subject = $subject; 
     $mailer->Body = Postman::nl2br($msg); 
     $mailer->AltBody = $msg; 
     $mailer->Send(); 
    } 
} 

我已經把我的通訊設計成mailer.php,並請標記爲...

mailer.php

<div> 
<h1><?php $subject; ?><span>27 September 2011 at 6:26 pm</span></h1> 
<div> 
<p>Hello <?php $name; ?>,</p> 
<?php $message; ?> 
</div> <!--message container --> 
</div> 

我使用正確的方法或我應該做些更美好因爲它不工作。請建議。謝謝。

回答

5

您不能給一個變量,但你可以做的是使用PHP的output buffering functions達到預期的效果,例如:

ob_start(); 
include 'mailer.php'; 
$msg = ob_get_clean(); 

這將呈現模板,並把結果保存在$msg

+1

和一個爲你實際鏈接到OB文檔+1。 –

+0

感謝您的正確和快速的回​​答 – seoppc

5

include()不返回任何你包括。它會成功返回true(包含/執行文件)或false(不能包含文件)。使用您當前的結構,您需要:

ob_start(); 
include('mailer.php'); 
$msg = ob_get_clean(); 

捕獲包含它的mailer.php腳本的輸出。

+0

嗯,你好,看起來像你在我心中(或其他方式:) :) – middus

+0

是的,看到「另一個答案已發佈」就像我點擊提交。 –

+0

+1因爲你/我們的回答很棒;)。 – middus