2016-01-21 40 views
0

我想使用PhpMailer將php頁面數據作爲郵件正文發送。PHPMailer包含php頁面爲主體?

我所有的代碼都正常工作。

我的主網頁代碼:

<?php 
require_once('libs/PHPMailer/PHPMailerAutoload.php'); 
require 'libs/PHPMailer/class.phpmailer.php'; 

$some_page_contents = file_get_contents('welcome.php'); 

$mail = new PHPMailer(); 
$mail->IsMail(); 
$mail->Host  = "smtp.example.com"; 
$mail->Username = "[email protected]"; 
$mail->Password = "example"; 
$mail->SetFrom("[email protected]","first User"); 
$mail->AddAddress("[email protected]"); 
$mail->isHtml(true); 
$mail->Subject = "Second PHPMailer Message"; 
$mail->Body  = $some_page_contents; 
$mail->WordWrap = 50; 
$mail->Send(); 
?> 

我的welcome.php代碼

<?php 
echo 'hello'; 

在我<?php echo 'hello'; Whydo我得到的PHP體在郵件中還郵件?

+0

電子郵件不是一個網頁。它充其量只是一個帶有一些有限CSS的HTML頁面。您無法發送動態內容,JavaScript,PHP等 - 您只能發送HTML&CSS或純文本。它將被電子郵件客戶端解釋爲兩者之一。 – Ben

+0

在你的php.ini中啓用'allow_url_fopen',然後像這樣做'$ some_page_contents = file_get_contents('http://example.com/welcome.php'); '爲了實際讓php生成頁面內容。現在你只從'welcome.php'文件獲取實際內容,它不會被解析爲php – Cyclonecode

+0

將代碼基於PHPMailer提供的示例,而不是隨機的,過時的東西。 – Synchro

回答

0

我碰到過很多次。我有很多需要發送模板化電子郵件的應用程序。我通過讓我的模板加載一個變量來解決這個問題。因此,例如,在我的主文件中,我將只包含一個包含模板文件的include語句。在包含之後,我將把消息體設置爲一個指定的變量,讓我們稱它爲$ body。但是在實際的模板文件中,我會像這樣設置主體。

$body = <<<EOF 
Hello $name!! 
EOF; 

這樣你就可以運行在模板文件中的PHP代碼,並得到回報的變量。

我解決這個問題的另一種方法是讓我的模板明文化,但使用像{name}這樣的佔位符,只是使用str_replace函數將{name}的所有實例替換爲實際變量值。

這些都不是真正的答案,而是更多的選擇。祝你好運。