如何在发送电子邮件时使CodeIgniter尊重消息中的换行符

时间:2011-03-21 06:17:49

标签: codeigniter

如何在尊重消息字段中的换行符的同时使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);

有什么想法吗?

1 个答案:

答案 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。为此,请按照以下简单步骤操作:

  • application \ config 目录中,创建名为 email.php 的文件
  • 然后你可以简单地在那个文件中写下你的配置:

`$config['mailtype'] = 'html';`

中提琴!你完成了。就这么简单!现在只需调用您的电子邮件类并像往常一样使用,而无需配置mailtype之类的内容。您可以在标题Email Preferences here下看到email config选项的完整列表。不要忘记,您可以使用application\config\autoload.php自动加载email库,从而从代码中删除此行$this->load->library('email');