使用 php 发送邮件:Header 被破坏
Sending mail with php: Header gets broken
我使用以下代码发送邮件:
$recipient="mymail@example.com";
$body="<html><body>This is magic</body></html>";
$subject="hi folks!";
$thisMail="sender@example.com";
$replyHeader = "MIME-Version: 1.0\r\nContent-Type: text/html; charset=UTF-8\r\nFrom: ".$thisMail. "\r\nReply-To: ".$thisMail."\r\n";
mail($sender, "Re:".$subject, $body, $replyHeader);
邮件已发送,但当我在客户端邮件程序中打开它时,header 似乎已损坏。第一个换行符 (\r\n) 之后的所有内容都会显示在邮件中。还会显示其他一些 header-contents。所以邮件的可见body在邮件客户端中看起来是这样的:
Content-Type: text/html; charset=UTF-8
From: sender@example.com
Reply-To: sender@example.com
Envelope-To: mymail@example.com
X-UI-Filterresults [... lots of stuff]
<html><body>This is magic</body></html>
那里出了什么问题?
一个(在许多例子中)表明它 "should" 是这样工作的:http://css-tricks.com/sending-nice-html-email-with-php/
不是依赖 mail
函数,而是有一些非常棒的库可以为您处理 headers、附件、内容和发送。
Laravel 和其他框架使用的其中一个是 SwiftMailer,您应该检查一下。
他们也有一些不错的 documentation on setting headers!
老实说,利用库而不是重新发明轮子,你会收获很多。
我使用以下代码发送邮件:
$recipient="mymail@example.com";
$body="<html><body>This is magic</body></html>";
$subject="hi folks!";
$thisMail="sender@example.com";
$replyHeader = "MIME-Version: 1.0\r\nContent-Type: text/html; charset=UTF-8\r\nFrom: ".$thisMail. "\r\nReply-To: ".$thisMail."\r\n";
mail($sender, "Re:".$subject, $body, $replyHeader);
邮件已发送,但当我在客户端邮件程序中打开它时,header 似乎已损坏。第一个换行符 (\r\n) 之后的所有内容都会显示在邮件中。还会显示其他一些 header-contents。所以邮件的可见body在邮件客户端中看起来是这样的:
Content-Type: text/html; charset=UTF-8
From: sender@example.com
Reply-To: sender@example.com
Envelope-To: mymail@example.com
X-UI-Filterresults [... lots of stuff]
<html><body>This is magic</body></html>
那里出了什么问题?
一个(在许多例子中)表明它 "should" 是这样工作的:http://css-tricks.com/sending-nice-html-email-with-php/
不是依赖 mail
函数,而是有一些非常棒的库可以为您处理 headers、附件、内容和发送。
Laravel 和其他框架使用的其中一个是 SwiftMailer,您应该检查一下。
他们也有一些不错的 documentation on setting headers!
老实说,利用库而不是重新发明轮子,你会收获很多。