所以我在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
答案 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以获取更多信息。