5

这就是我所拥有的:

$msg = "1'2 ’3"4 “5”6 7~8!9@10#11$12%13^14&15*16(17)18}19{20"21:22?23>24<25 ";
mail("myemail@example.com","My subject",$msg);

当我收到电子邮件时,我得到了这个:

1&#039;2 ’3&quot;4 “5”6 7~8!9@10#11$12%13^14&amp;15*16(17)18}19{20&quot;21:22?23&gt;24&lt;25

所以我猜它会将字符更改为html?有任何想法吗?我需要收到的电子邮件准确包含我在 $msg 中存储的内容。谢谢

它还删除了我的返回休息时间。在数据库中,该字段具有返回中断,它的存储方式如下:

Hello $name

welcome to $websitename 

thank you, management

这是一个蹩脚的例子,但你可以看到有 2 个空行。当电子邮件发送出去时,这些返回中断被忽略并且所有这些都符合任何想法请

4

2 回答 2

4

尝试添加标题,例如:

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($to, $subject, $message, $headers);

见这里:PHP 邮件()

于 2012-07-03T04:05:30.093 回答
2

您必须将消息封装在base64编码格式中以防止内容损坏:

$msg = "1'2 ’3\"4 “5”6 7~8!9@10#11$12%13^14&15*16(17)18}19{20\"21:22?23>24<25";

$body = chunk_split(base64_encode($msg));

mail("myemail@example.com", "My subject", $body, "Content-Transfer-Encoding: base64");

不同的邮件客户端处理换行的方式不同;例如,众所周知,Outlook 会压缩换行符,但也提供了一种恢复它们的方法。

为了完全控制,您应该转而使用 HTML 电子邮件,可选择使用文本模式回退。

于 2012-07-03T04:05:12.043 回答