定义 header 中断后不再工作

After define the header breaks dont work anymore

在我使用 UTF-8 定义 PHP header 之后,我对 $msg 的中断不再起作用。 问题出在哪儿?还有其他休息的方法吗?

谢谢!

代码:

<?php  

$username = $_POST['name'];
  $lastname = $_POST['lastname'];
$useremail = $_POST['mail'];
  $fon = $_POST['phone'];
$usermsg = $_POST['nachricht'];
$myemail = "Mail@XY";

$msg = "Antwort an: $useremail\n". "Name: $username $lastname \n". "Telefonnummer: $fon \n". "Nachricht: $usermsg";

$subject = "Neue Nachricht vom Kontaktformular";

$headers = 'Content-type: text/html; charset=utf-8'. "\r\n"
          .'From: ' . $myemail . "\r\n";

if(empty($username)||empty($useremail)||empty($usermsg)){
  header("location:index.html?error");
}

else{
  $to = "Mail@XY";
  mail($to, $subject, $msg, $headers);
} 

?>

不是 utf-8 造成的,而是 text/html

您是在告诉接收邮件客户端解析电子邮件并将其显示为 HTML 文档。如您所知,在 HTML 中使用 <br> tag 指定换行符。 HTML 渲染引擎不会注意到 \n\r\n - 这些仅在 plain-text 文档中有用。

这个:

$msg = "Antwort an: $useremail<br>". "Name: $username $lastname <br>". "Telefonnummer: $fon <br>". "Nachricht: $usermsg";

应该修复它。

$msg = "Antwort an: $useremail\n". "Name: $username $lastname \n". "Telefonnummer: $fon \n". "Nachricht: $usermsg";

如果您的目标是HTML-mail格式,$msg中的\n必须替换为HTML标签<br>

$msg = "Antwort an: $useremail<br>". "Name: $username $lastname<br>". "Telefonnummer: $fon<br>". "Nachricht: $usermsg";

如果您的目标是 text-mail 格式,请尝试 PHP_EOL\r\n 而不是 $msg.

中的 \n