我正在尝试通过附带附件的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
我在代码上尝试了很多变化而没有成功。毫无疑问,这将是我无法看到的微不足道的事情。
提前致谢
答案 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邮件。