将textarea保存到数据库中并发送保留文本区域格式的电子邮件

时间:2013-03-14 20:43:06

标签: php mysql email cakephp cakephp-2.0

通过cakephp,我保存了一个文本区域,用作电子邮件消息到数据库中。 我可以正确保存它,但是当我尝试从数据库中提取数据并使用该数据发送电子邮件时,我收到的电子邮件是一长串文本,而不是保留我在文本中键入的格式区域。是否可以保留格式以发送电子邮件?

例如:如果在文本区域我键入了类似的内容:

This is line 1.
This is line 2.
This is line 3.

我收到的电子邮件将是

This is line 1. This is line 2. This is Line 3.

我想要的是我输入的内容:

This is line 1.
This is line 2.
This is line 3.

这是代码:         App :: uses('CakeEmail','Network / Email');

    $recipients = str_replace(' ', '', $recipients);
    $recipients = explode(',', $recipients);
    $email = new CakeEmail();
    $email->from($user_email);
    $email->to($recipients);
    $email->subject($final_subject);
    $email->template('download_link_email');
    $email->emailFormat('both');
    $email->viewVars(array('url' => $this->generateUrl('datas', 'download', $group_id, $user_id, $email_id), 'final_subject' => $final_subject, 'final_recipient' => $final_recipients, 'final_message' => $final_message));
    $email->send(); 

和download_link_email模板

<html>
    <head>
        <title><?php echo $final_subject; ?></title>
    </head>
    <body>
        <h1><?php echo $final_subject; ?></h1>
        <p><?php echo $final_message; ?></p>
        <p><?php echo $this->Html->link('Click here to download', $url);?>.</p>
    </body>
</html>

至于如何将文本区域保存到数据库,它是标准的cakephp样式

1 个答案:

答案 0 :(得分:1)

你需要做这样的事情:

$order   = array("\r\n", "\n", "\r");
$replace = '<br />';
$final_message = str_replace($order, $replace, $final_message);

您可以查看here以获取有关str_replace

的更多信息

或者您可以使用nl2br(感谢 eggyal 指出)

nl2br($final_message)