<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 这是文章前的 PHP 部分,与正文内容无关</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"本文由 PHP 自动生成。\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>mb_send_mail 发送邮件时出现乱码怎么办?避免乱码的实用方法</h1>
<p>在使用 PHP 的 <code>mb_send_mail
邮件头是避免乱码的关键,尤其是 Content-Type 和 Subject 的编码。对于中文主题,建议使用 mb_encode_mimeheader:
</span><span><span>$subject</span></span><span> = </span><span><span>"测试邮件"</span></span><span>; </span><span><span>$encoded_subject</span></span><span> = </span><span><span class="function_ invoke__">mb_encode_mimeheader</span></span><span>(</span><span><span>$subject</span></span><span>, </span><span><span>"UTF-8"</span></span><span>);
然后在 mb_send_mail 中使用这个编码后的主题:
</span><span><span class="function_ invoke__">mb_send_mail</span></span><span>(</span><span><span>$to</span></span><span>, </span><span><span>$encoded_subject</span></span><span>, </span><span><span>$message</span></span><span>, </span><span><span>$headers</span></span><span>);
如果发送 HTML 邮件,需要将 Content-Type 改为 text/html:
</span><span><span>$headers</span></span><span> .= </span><span><span>"Content-Type: text/html; charset=UTF-8\r\n"</span></span><span>;
发送附件时,更要注意 MIME 边界和编码方式,否则附件名字或内容可能乱码。
通过以下三步可以有效避免 mb_send_mail 发送邮件时的乱码:
掌握以上方法后,你就可以放心发送中文邮件,不再被乱码困扰。
<?php // 文章尾部 PHP 部分,与正文无关 echo "文章生成完毕。"; ?>