当前位置: 首页> 最新文章列表> mb_send_mail 发送邮件时出现乱码怎么办?避免乱码的实用方法

mb_send_mail 发送邮件时出现乱码怎么办?避免乱码的实用方法

gitbox 2025-09-04
<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

3. 正确设置邮件头

邮件头是避免乱码的关键,尤其是 Content-TypeSubject 的编码。对于中文主题,建议使用 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>);

4. HTML 邮件与附件

如果发送 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 边界和编码方式,否则附件名字或内容可能乱码。

5. 常见注意事项

  • 确保 PHP 脚本文件本身是 UTF-8 编码,无 BOM。
  • 邮件内容中不要混用多种字符集。
  • 如果使用第三方库(如 PHPMailer),通常内部会自动处理编码问题,更加可靠。

总结

通过以下三步可以有效避免 mb_send_mail 发送邮件时的乱码:

  1. 设置正确的内部编码 mb_internal_encoding("UTF-8")
  2. 邮件头中指定字符集 charset=UTF-8
  3. 对中文主题使用 mb_encode_mimeheader 编码。

掌握以上方法后,你就可以放心发送中文邮件,不再被乱码困扰。

<?php // 文章尾部 PHP 部分,与正文无关 echo "文章生成完毕。"; ?>