为什么电子邮件在正文中显示mime边界/

时间:2011-03-14 04:38:21

标签: php mime

我正在尝试通过附带附件的PHP mail()发送电子邮件。

附件通过OK并且正文的内容在那里但我也看到了mime边界和内容类型而不是电子邮件是HTML

    --==Multipart_Boundary_x9e92752e972e274a182cc4cafd83c674xContent-Type: text/html; charset="iso-8859-1"Content-Transfer-Encoding: 7bit

<p>
    Body content</p>
<p> <snip>

代码如下所示:

 $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

   $headers = "From: $from\r\n" .
   "MIME-Version: 1.0\r\n" .
      "Content-Type: multipart/mixed;\r\n" .
      " boundary=\"{$mime_boundary}\"";

    $message = "--{$mime_boundary}Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
    ."Content-Transfer-Encoding: 7bit\r\n\r\n" . $bodyText . "\r\n";   

      $message .=  "--{$mime_boundary}\n" .
      "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
      "Content-Transfer-Encoding: 7bit\n\n" .
   $message . "\n\n";

then the attachment routine

我在代码上尝试了很多变化而没有成功。毫无疑问,这将是我无法看到的微不足道的事情。

提前致谢

2 个答案:

答案 0 :(得分:3)

你忘了两次正确的行结尾。

   $message = "--{$mime_boundary}Content-Type"

缺少第一个\r\n

 $message .=  "--{$mime_boundary}\n" .

在这里,您只写了\n而不是\r\n

另外请不要忘记在最后需要一个终止MIME边界,并且结束双减去终结符:

  $message .=  "--{$mime_boundary}--\n" .

答案 1 :(得分:2)

看起来你在边界定界符之后缺少所需的CRLF,也可能是分隔符可能是缩进的(它一定不是),尽管这可能只是这里的代码格式。看起来您只使用换行符而不是强制性CRLF。

您应该认真考虑使用a mature mailing library, like SwiftMailer轻松地为您汇编MIME邮件。