如何在尊重消息字段中的换行符的同时使codeigniter发送电子邮件?
表单消息 - http://d.pr/Sae5
<?php echo form_open($this->uri->uri_string()); ?>
<table class="forms-table">
<tr>
<td>
<label for="name">Name</label>
</td>
<td>
<input type="text" id="name" name="name" value="<?php echo set_value('name'); ?>" />
</td>
<td>
<?php echo form_error('name'); ?>
</td>
</tr>
<tr>
<td>
<label for="email">Email</label>
</td>
<td>
<input type="text" id="email" name="email" value="<?php echo set_value('email'); ?>" />
</td>
<td>
<?php echo form_error('email'); ?>
</td>
</tr>
<tr>
<td>
<label for="message">Message</label>
</td>
<td>
<textarea name="message" id="message" cols="40" rows="6"><?php echo set_value('message'); ?></textarea>
</td>
<td>
<?php echo form_error('message'); ?>
</td>
</tr>
<tr>
<td colspan="3">
<input type="submit" value="submit" />
</td>
</tr>
</table>
<?php echo form_close(); ?>
当我收到电子邮件时,我会在一行中得到“嗨,我很棒”。我将换行符和crlf配置设置为“\ r \ n”,charset为“utf-8”,我使用
获取我的消息字段的值$message = $this->input->post('message');
...
$this->email->message($message);
有什么想法吗?
答案 0 :(得分:7)
为什么不发送电子邮件有html?
首先你必须准备好消息(我假设你正在使用POST)
$message = str_replace ("\r\n", "<br>", $this->input->post('message') );
或者您可以使用本机php方式获取$_POST
$message = str_replace ("\r\n", "<br>", $_POST['message'] );
您所做的是用<br>
然后你只需要加载lib并通过config正确设置它,例如:
$this->load->library('email');
$config['mailtype'] = 'html';
$this->email->initialize($config);
$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->subject('Email Test');
$this->email->message( $message );
$this->email->send();
就是这样!我希望这有帮助,
您可以获得有关http://codeigniter.com/user_guide/libraries/email.html的更多信息 希望你花时间阅读它!
只需添加,您可以使用nl2br
简化->mailtype = 'html';
来简化此过程。像这样:
$message = nl2br($this->input->post('message')); // https://codeigniter.com/user_guide/libraries/input.html
$this->load->library('email'); // use autoload.php to remove this line
$this->email->mailtype = 'html';
此外,如果您要创建一个始终使用的配置,您实际上可以创建一个配置文件,CI将自动使用它,因此您永远不需要使用->initialize
。为此,请按照以下简单步骤操作:
`$config['mailtype'] = 'html';`
中提琴!你完成了。就这么简单!现在只需调用您的电子邮件类并像往常一样使用,而无需配置mailtype
之类的内容。您可以在标题Email Preferences
here下看到email config
选项的完整列表。不要忘记,您可以使用application\config\autoload.php自动加载email
库,从而从代码中删除此行$this->load->library('email');
。