换行符不起作用

时间:2016-10-26 17:34:27

标签: php email

为什么消息会在一行中出现?在我添加$headers后,我的消息开始变为单行。

<?php 

// your email
$user_email = "marketing@fontlife.com.br";  

$mail = array(
    "name" => htmlspecialchars($_POST['cf_name']),
    "email" => htmlspecialchars($_POST['cf_email']),
    "subject" => htmlspecialchars($_POST['cf_subject']),
    "assunto" => 'Novo contato realizado via website',      
    "message" => htmlspecialchars($_POST['cf_message'])
);

$nome = $_POST['cf_name'];
$email = $_POST['cf_email'];
$assunto = $_POST['cf_subject'];
$assunto_mensagem = 'Novo contato realizado via website';
$mensagem = $_POST['cf_message'];

$assunto = 'Novo contato realizado a partir do site Font Life';

$headers = "MIME-Version: 1.1\r\n".
               "Content-type: text/html; charset=utf-8\n".
               "Content-Transfer-Encoding: 8bit\n".
               "From: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\n".
               "Reply-to: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\n".
               "Date: ". date( "r" ). "\n";

function validate($arr){

    return !empty($arr['name']) && strlen($arr['message']) > 20 && filter_var($arr['email'],FILTER_VALIDATE_EMAIL);

}

if(validate($mail)){

    echo mail($user_email, $mail['assunto'], 
        "Nome : $nome\n" 
        ."Assunto : $assunto\n"
        ."E-mail : $email\n"
        ."Mensagem : $mensagem\n",
        $headers
    );

}

?>

消息就像这样:

Nome:Pedro Assunto:Novo contato realizado partir do site Font Life电子邮件:pedro.hkms@outlook.com Mensagem:asdklnasklasdmklasdmasdçlasd,mçasd

我的代码中有错误吗?

2 个答案:

答案 0 :(得分:2)

  1. 您应该使用\r\n(而不仅仅是\n)来分割标题。
  2. 内容部分应为html - 因此在内容中您应使用<br>进行换行。

  3. 这是标题部分:

    $headers = "MIME-Version: 1.1\r\n".
               "Content-type: text/html; charset=utf-8\r\n".
               "Content-Transfer-Encoding: 8bit\r\n".
               "From: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\r\n".
               "Reply-to: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\r\n".
               "Date: ". date( "r" );
    

    这是对邮件功能的调用:

    mail($user_email, $mail['assunto'],
        "Nome : $nome<br />\n". 
        "Assunto : $assunto<br />\n".
        "E-mail : $email<br />\n".
        "Mensagem : $mensagem<br />\n",
        $headers
    );
    

答案 1 :(得分:1)

使用它可能工作!!!

      echo mail($user_email, $mail['assunto'], 
            "Nome : $nome". <br><br>" 
            . "Assunto : $assunto"." <br><br>"
            ."E-mail : $email"."<br> <br>"
             ."Mensagem : $mensagem"
             ."<br><br> ",
            $headers
);