PHP中的断行不起作用

时间:2014-02-04 18:06:46

标签: php html

我正在尝试使用换行符来合成电子邮件,所以它看起来像:

Name:
Email:
Message:

我添加了\r\n但它没有做任何事情,然后我尝试并添加$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";认为我需要告诉它这是HTML并且没有做任何事情。

我做错了什么?

<?php
   session_start();

   if ($_SERVER['REQUEST_METHOD'] == 'POST'){
      ob_start();

      if(isset($_POST['name'])
      && isset($_POST['email'])
      && isset($_POST['message'])
      && isset($_POST['token'])){

         if($_SESSION['token'] != $_POST['token']){
            $response = "0";
         } else {
            $_SESSION['token'] = "";
            $name = $_POST['name'];
            $email = $_POST['email'];
            $message = $_POST['message'];

            $to = "support@loaidesign.co.uk";
            $subject = "New Message From: $name";
            $message = "Name: $name\r\n
                        Email: $email\r\n\r\n
                        Message: $message";

            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
            $headers .= 'From: '.$email . "\r\n";
            $mailed = ( mail($to, $subject, $message, $headers) );

            if( isset($_POST['ajax']))$response = ($mailed) ? "1" :
            "0"; else $response = ($mailed) ? "<h2>Success!</h2>" :
            "<h2>Error! There was a problem with sending.</h2>";
            echo $response;
         }

      } else {
         echo "Form data error!";
      }

      ob_flush();
      die();
   }

?>

4 个答案:

答案 0 :(得分:6)

您应该尝试使用<br/> HTML代码,因为您已指定text/html内容类型:

$message = "Name: $name<br/>
            Email: $email<br/><br/>
            Message: $message";

答案 1 :(得分:4)

要在html中显示换行符,您必须使用<br/>(或使用<pre></pre>标记,如果您真的关心使用\r\n)。

请注意,您可以使用php常量PHP_EOL

答案 2 :(得分:0)

将“\ r \ n”更改为html新行标记:br - 应该有效。

答案 3 :(得分:0)

如果您使用简单文字但未使用text/html,请尝试:

$message = "Name: $name\r\n".
           "Email: $email\r\n\r\n".
           "Message: $message";