我正在尝试使用换行符来合成电子邮件,所以它看起来像:
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();
}
?>
答案 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";