保存文本区域到数据库和发送电子邮件保持文本区域格式


save textarea into database and send email keeping the text area format

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

e。g:如果在文本区我输入如下:

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.

代码如下:应用::使用("CakeEmail"、"网络/电子邮件");

    $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样式

您需要这样做:

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

你可以点击这里查看str_replace

的更多信息

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

nl2br($final_message)