PHP sendmail()格式未保留

时间:2010-07-28 19:19:25

标签: php html email formatting tinymce

我正在为能够发送电子邮件的客户创建一个Web应用程序。我正在使用TinyMCE作为我的文本编辑器,它运行得非常好。我正在使用带有PHP Swiftmailer的sendmail()来处理电子邮件的实际发送。 Swiftmailer工作得很好。

我遇到的唯一问题是,当我收到电子邮件(在Gmail中)时,格式化无法正确呈现。我在电子邮件正文中收到以下内容:

<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href=\\\"http://www.google.com\\\">Google</a>.</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>Line breaks!<br /> <br /> Shift breaks!</p>\r\n<p>&nbsp;</p>\r\n<p>Bye!</p>

链接呈现,就是这样。我错过了什么?

谢谢!

3 个答案:

答案 0 :(得分:3)

查看文档中的第二个和第三个代码块,了解如何设置HTML Content-Type ...

http://swiftmailer.org/docs/header-parameterized

答案 1 :(得分:2)

您需要以实际的HTML格式发送电子邮件。您正在发送HTML的纯文本。链接呈现是因为Google很好并自动链接它认为有效的URL。

我强烈推荐Pear邮件类。有方便的功能来设置HTML和纯文本邮件正文。

答案 2 :(得分:0)

在你的情况下我会做的是这样的事情:

<?php

$headers = "From: Me <me@myemail.com>\r\n";
$headers .= "X-Mailer: PHP/".phpversion()."\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";  //States it is HTML Content
$headers .= "Content-Transfer-Encoding: 7bit\r\n";

$subject = "This is my subject";

$message = <<<MESS
<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href="http://www.google.com">Google</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Line breaks!<br /> <br /> Shift breaks!</p>
<p>&nbsp;</p>
<p>Bye!</p>
MESS;

if(mail("", $subject, $message, $headers) == True){
     echo "Message Sent";
} else {
     echo "Message NOT Sent"
}

?>

注意:GMAIL非常挑剔它如何显示电子邮件。最好创建一个Gmail帐户并自己测试它的外观。 Hotmail很相似