PHP HTML-Email结果中的感叹号随机出现

Tom*_*Tom 11 html php email

我在PHP电子邮件功能的结果中随机出现惊叹号.我读到这是因为我的线太长或者我不得不在Base64中对电子邮件进行编码,但我不知道该怎么做.

这就是我所拥有的:

$to = "you@you.you";
$subject = "Pulling Hair Out";
$from = "me@me.me";
$headers = "From:" . $from;
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 64bit\r\n";

mail($to,$subject,$message,$headers); 
Run Code Online (Sandbox Code Playgroud)

我该怎么解决这个问题,所以没有随意的!在结果?谢谢!

Lum*_*ack 14

如下所述:HTML电子邮件中的感叹号

问题是你的字符串太长了.将超过78个字符的HTML字符串提供给邮件功能,最终会得到一个!(砰)在你的字符串中.

这是由于RFC2822中的行长度限制http://tools.ietf.org/html/rfc2822#section-2.1.1

  • @tomuky试试`$ base64_email_text = rtrim(chunk_split(base64_encode($ email_text)));`来源:http://www.brightlemon.com/blog/unexpected-exclamation-marks-while-using-phps-mail-function- 0 (3认同)
  • 我已经阅读了另一个问题"HTML电子邮件中的感叹号".我不确定如何做到这一点:"分辨率是将其更改为base-64编码数据或在我的长行html代码上添加\ r \n." (2认同)

kno*_*bli 9

尝试使用这段代码:

$to = "you@you.you";
$subject = "Pulling Hair Out";
$from = "me@me.me";
$headers = "From:" . $from;
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 64bit\r\n";

$finalMessage = wordwrap( $message, 75, "\n" );

mail($to,$subject,$finalMessage,$headers);
Run Code Online (Sandbox Code Playgroud)

问题是一行不应超过998个字符.(另请参见/sf/answers/898823691/)

  • 这对我来说非常有效。我们向Outlook和Office 365收件人发送大量电子邮件,并且wordwrap命令完美地消除了所有感叹号,而不会影响任何HTML。一切都按预期方式呈现。 (2认同)