我上一個用於管理收件人和多個內容的組的應用程序工作送PHP代碼的HTML郵件
我想,所以我在一個表中的一些PHP代碼保存爲使用不同的HTML設計在裏面。
但問題是,我沒有得到使用這些HTML內容發送郵件時執行的PHP代碼。
我使用PHPMailer發送郵件並使用addslashes保存HTML內容並取回stripslashes。
謝謝。
我上一個用於管理收件人和多個內容的組的應用程序工作送PHP代碼的HTML郵件
我想,所以我在一個表中的一些PHP代碼保存爲使用不同的HTML設計在裏面。
但問題是,我沒有得到使用這些HTML內容發送郵件時執行的PHP代碼。
我使用PHPMailer發送郵件並使用addslashes保存HTML內容並取回stripslashes。
謝謝。
使用addslashes保存HTML內容並使用 stripslashes取回。
這很糟糕。我不知道你爲什麼這樣做,但是如果你的意圖是逃避查詢,請使用mysql_real_escape_string()或數據庫驅動程序的analgoue函數(或使用參數化查詢)。
如果您的意圖是,我不知道,清理HTML?好吧,那沒用。因此,無論出於何種原因,都不需要在此添加斜線。
但問題是,我沒有得到執行PHP代碼時發送 郵件使用這些HTML內容。
因爲你的內容是以字符串的形式返回的,所以PHP會像這樣讀取它,包括標籤。
甲最髒溶液,AND強烈建議不要,使用eval()評估PHP代碼並將其執行。但是,這是非常危險的,並可能導致嚴重的安全問題,所以我還沒有要告訴你一些例子:)
的最佳解決方案是使用某種模板系統。我不建議使用Smarty的或其它完全成熟的模板引擎,但你可以滾了一個簡單的自定義代碼分析器,可以沿着這些路線工作:
您使用的佔位符保存您的變量,如
{{variable_text}} {{recipient}} {{address}}
或類似的東西。你只需要替換你所需要的東西,所以在你的PHP腳本中,你可以這樣做,閱讀這個電子郵件:
$change = array('recipient' => 'John Smith',
'address' => 'Unknown Avenue, 666',
'variable_text' => 'We are glad to invite you to');
$text = '<p>To: {{recipient}}.</p>
<p>Address: {{address}}.</p>
Message: Dear{{recipient}}<br />{{variable_text}}';
foreach($change as $k => $v)
{
$text = str_replace('{{'.$k.'}}', $v, $text);
}