You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP发邮件至Outlook时希腊字母Δ显示异常的解决方法咨询

解决PHP mail函数发送含希腊字母邮件到Outlook的乱码问题

你的问题核心是编码不匹配:PHP默认mail()函数会用ISO-8859-1编码发送邮件,而希腊字母Δ属于UTF-8字符,Outlook未被明确告知编码时会用默认编码解析,导致乱码显示为Î"。以下是可行的解决方法:

1. 强制设置UTF-8编码的邮件头

在邮件头中明确指定Content-Type的字符集为UTF-8,这是最直接有效的方案:

$to = '收件人邮箱@example.com';
$subject = 'Δ request and Δ fault';
$message = 'Δ request and Δ fault must be....';

// 构建包含编码声明的邮件头
$headers = "MIME-Version: 1.0\r\n";
// 纯文本邮件用text/plain,HTML邮件替换为text/html
$headers .= "Content-Type: text/plain; charset=utf-8\r\n";
$headers .= "From: 发件人邮箱@example.com\r\n";

// 发送邮件
mail($to, $subject, $message, $headers);

2. 确保邮件内容本身是UTF-8编码

  • 保存你的PHP文件时,选择UTF-8无BOM格式,避免文件本身编码导致字符提前乱码;
  • 如果内容来自数据库,确保数据库连接、数据表字段的编码均为UTF-8(如utf8mb4),从源头保证字符编码正确。

3. 用mb_send_mail替代原生mail函数(可选)

PHP的mbstring扩展提供的mb_send_mail对多字节字符支持更好,适合处理非ASCII字符:

// 初始化多字节编码设置
mb_language('uni');
mb_internal_encoding('UTF-8');

$to = '收件人邮箱@example.com';
// 对主题进行MIME编码,避免特殊字符在主题栏乱码
$subject = mb_encode_mimeheader('Δ request and Δ fault', 'UTF-8');
$message = 'Δ request and Δ fault must be....';
$headers = "From: 发件人邮箱@example.com\r\n";

mb_send_mail($to, $subject, $message, $headers);

内容的提问来源于stack exchange,提问作者Fabio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:10:43