我编写了使用HTML和JavaScript(jQuery)从PHP发送电子邮件的代码。在js中我定义了以下字符串:
var firstT = "It is " + $("#time").html() + " right now.";
var secondT = "And now, it is " + $("#othTime").html() + ".";
var sendT = firstT + "\r\n" + secondT;
然后我将此字符串发送到PHP文件:
var thTi = "folder/time.php?to=" + $("#perName").val() + "&message=" + sendT;
$.ajax({
url: thTi
});
PHP接收此字符串并使用以下代码发送它:
<?php
$to = $_GET['to'];
$subject = "The Subject";
$message = $_GET['message'];
$headers = 'From: Me?' . "\r\n" .
'Reply-To: no-reply@thesite.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
所以,问题是 - 当一个人收到消息时,它就在一行中。我添加了换行符\r\n
,甚至尝试使用<br>
和<br />
。我发现在某个地方插入一个点.
可能会解决问题,但我已经尝试了,但事实并非如此。
答案 0 :(得分:2)
要发送包含mail()
的html电子邮件,您必须添加正确的标题:
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: Me?' . "\r\n";
$headers .= 'Reply-To: no-reply@thesite.com' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
清理并添加换行符到你的html:
$message = strip_tags($_GET['message'];);
$message_html = preg_replace('/\n/' , '<br />' , $message);
答案 1 :(得分:0)
使用双引号"
代替'
,然后\r\n
将起作用。所以你的新代码必须如下:
$headers = "From: Me?" . "\r\n" .
"Reply-To: no-reply@thesite.com" . "\r\n" .
"X-Mailer: PHP/" . phpversion();
答案 2 :(得分:0)
由于您在邮件中首次使用html tages,您需要做的是将该邮件的标题类型设置为html。在添加此变量中的from和其他详细信息之前,将以下行添加到开头的$ header变量的代码中。
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: Me?' . "\r\n" .
'Reply-To: no-reply@thesite.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
要了解这一点,您可以看到以下链接:http://www.w3schools.com/php/func_mail_mail.asp
我希望这会对你有所帮助。