2011-10-29 53 views
1

我上一个用于管理收件人和多个内容的组的应用程序工作送PHP代码的HTML邮件

我想,所以我在一个表中的一些PHP代码保存为使用不同的HTML设计在里面。

但问题是,我没有得到使用这些HTML内容发送邮件时执行的PHP代码。

我使用PHPMailer发送邮件并使用addslashes保存HTML内容并取回stripslashes。

谢谢。

回答

3

使用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); 
}