2009-11-15 58 views
3

所以我試圖做一個做一個HTML郵件系統。並且我的HTML我想成爲一個模板,存儲在像一個單獨的文件:PHP HTML電子郵件,使用HTML模板

<div clas="headr"></div> 
    <div class="content"></div> 
<div class="footer"></div> 

時,我想發送郵件我希望我的郵件內容(從輸入表單)進入該div.content,然後發送整個html(模板+提交的文本)。 這樣做的最好方法是什麼?我在想的東西,如:

  1. 導入模板到我的PHP發送郵件
  2. 與「內容」類找到div和添加文本提交到它
  3. 發送郵件

但我不知道如何「找到」div並將提交的文本寫入它。

回答

16

正如Pekka所說的,您可以簡單地使用str_replace在您的模板中插入數據。只需添加一個佔位符:

<div clas="header"></div> 
<div class="content">{{content}}</div> 
<div class="footer"></div> 

然後用您的內容替換佔位符:

$content = 'Whatever you want to insert...'; 
$tpl = file_get_contents('yourtemplate.html'); 
$tpl = str_replace('{{content}}', $content, $tpl); 
mail($tpl, ...); 
2

使用str_replace()將內容插入到您的模板中。

使用類似PHPMailer的類可以輕鬆發送HTML電子郵件。

17

你可以把一個PHP腳本的模板內,然後讓PHP本身做渲染,例如:

template.html:

<div clas="headr"></div> 
    <div class="content"><?php echo $body; ?></div> 
<div class="footer"></div> 

然後加載它,在你的PHP代碼:

$body = "Put this into the content tag..."; 
ob_start(); 
include("template.html"); 
$email = ob_get_clean(); 

編輯:在這種情況下,它可能是一個有點矯枉過正用我的方法,而不是一個簡單的替換,但如果不是更換整個電子郵件消息你想有一個更復雜的模板,它使簡單。例如: -

<table> 
<tr> 
    <td>Name:</td> 
    <td><?php echo $name; ?></td> 
</tr> 
<tr> 
    <td>Email:</td> 
    <td><?php echo $email; ?></td> 
</tr> 
</table> 

這是非常靈活,防止不必有太多的變量來代替,更重要的是保持HTML出你的代碼。

+0

+1 PHP是一種模板語言,不妨利用它。但你仍然需要'htmlspecialchars'。 – bobince 2009-11-16 01:46:01

0

如果您想避免在模板中使用佔位符或PHP代碼,您可以查看phpQuery,這是一個jQuery的PHP端口。

在你的榜樣,你會與此類似(見docs):

<?php 
$body = 'The body of your email message'; 

$template = file_get_contents('template.html'); 
$email = pq('div.content').html($body); 
?> 

似乎有點矯枉過正,但如果你打算增加更多相同的CSS選擇器的基礎功能,OG只是想讓你的設計師骯髒的手離開PHP可能是一個很好的解決方案。

相關問題