从数据库插入电子邮件消息的变量

时间:2014-03-25 18:14:26

标签: php codeigniter email

所以我在codeigniter发送一封电子邮件,邮件来自数据库。

我想要做的是将发布的变量放入数据库中的html格式的电子邮件中。

要发送电子邮件,我在控制器中有以下内容:

    $this->load->library('email');

    $this->load->model('cms');

    $message = $this->cms->Order_Email();

    $this->email->from('info@candykingdom.org', 'Candy Kingdom');
    $this->email->to($this->input->post('billingEmail'));

    $this->email->subject('Order Confirmation');
    $this->email->message($message->content);   

    $this->email->send();

现在我的电子邮件的一部分来自数据库:

<td>
   <p>Hi</p>
   <p>Sometimes all you want is to send a simple HTML email with a basic design.</p>
   <h1>Really simple HTML email template</h1>
...

我正在尝试将<p>Hi</p>行变为:<p>Hi John,</p>我尝试将该行更改为以下内容:

<p>Hi <?php echo $this->input->post('billingFname'); ?>,</p>

以及:

 <p>Hi '.$this->input->post('billingFName").',</p>

但是在完成并发送的电子邮件中,它显示的内容与电子邮件中的内容完全相同。没有用实际变量替换php。

所以我要问的是,我在存储的电子邮件中键入什么来使php代码用实际变量替换php?

例如,我们将John用作$this->input->post('billingFName');

只是一个想法

使用模板库可能会更好吗?像这样: https://github.com/philsturgeon/codeigniter-template

1 个答案:

答案 0 :(得分:0)

我见过的常见方法是使用通过str_replace替换的变量:

您的电子邮件的html包含一些您知道要替换的变量,如#USERNAME#。在您的数据库中存储

<td>
   <p>Hi #USERNAME#</p>
   <p>Sometimes all you want is to send a simple HTML email with a basic design.</p>
   <h1>Really simple HTML email template</h1>

然后,当您从数据库中获取时,您可以通过str_replace更改#USERNAME#:

$message->content = str_replace( '#USERNAME#', $var_with_username, $message->content );

您甚至可以在str_replace中使用数组,根据需要替换多个变量,请查看http://www.php.net/manual/en/function.str-replace.php#refsect1-function.str-replace-examples以获取更多信息。