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

使用Gmail API发邮件,Outlook已发送项显示HTML代码求助

解决Outlook已发送项显示HTML代码的问题

问题出在邮件MIME格式的合规性上,Outlook对MIME结构的解析比其他客户端更严格,你的代码存在几个关键问题导致已发送项无法正确渲染HTML:

  • 未定义MIME边界:代码直接使用$boundary变量但未初始化,导致邮件的多部分结构无效,Outlook无法区分HTML内容与邮件头。
  • Content-Type参数不全:text/html类型缺少字符集声明,Outlook无法识别编码规则,将HTML代码当作纯文本显示。
  • 换行符不符合标准:MIME协议要求用\r\n作为换行,代码中使用的\n会破坏Windows下Outlook的解析逻辑。
  • MIME结构不完整:缺少结束边界标记,导致Outlook无法确认HTML部分的结束位置。
  • 传输编码选择不当:7BIT编码仅支持ASCII字符,HTML中的特殊字符或非ASCII内容会引发解析错误。

修改后的完整代码

$objGMail = new Google_Service_Gmail($client);
$strMailContent = $msg;
$strToMail = $to;
$strSesFromName = $actual_fromname;
$strSesFromEmail = $actual_fromemail; 
$strSubject = $subject;

// 生成唯一MIME边界
$boundary = uniqid('boundary_', true);

// 构建邮件头,严格使用\r\n换行
$strRawMessage = '';
$strRawMessage .= 'To: ' . $strToMailName . " <" . $strToMail . ">\r\n";
$strRawMessage .= 'From: ' . $strSesFromName . " <" . $strSesFromEmail . ">\r\n";
$strRawMessage .= 'Subject: =?' . $subjectCharset . '?B?' . base64_encode($strSubject) . "?=\r\n";
// 声明邮件为多部分格式
$strRawMessage .= "MIME-Version: 1.0\r\n";
$strRawMessage .= "Content-Type: multipart/alternative; boundary=\"{$boundary}\"\r\n\r\n";

// 构建HTML内容块
$strRawMessage .= "--{$boundary}\r\n";
$strRawMessage .= 'Content-Type: text/html; charset=utf-8' . "\r\n";
$strRawMessage .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n";
// 对HTML内容进行编码,兼容特殊字符
$strRawMessage .= quoted_printable_encode($strMailContent) . "\r\n";

// 添加MIME结束边界标记
$strRawMessage .= "--{$boundary}--\r\n";

// 编码为Gmail API要求的base64url格式
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
$msg = new Google_Service_Gmail_Message();
$msg->setRaw($mime);
$objSentMsg = $objGMail->users_messages->send($actual_fromemail, $msg);

关键修改说明

  1. 新增唯一边界生成逻辑,确保MIME结构的有效性;
  2. 添加MIME-Version和multipart/alternative声明,明确邮件的多部分类型;
  3. 所有换行替换为\r\n,符合MIME标准;
  4. 使用quoted-printable编码HTML内容,兼容特殊字符与非ASCII内容;
  5. 补充结束边界标记,完善MIME结构完整性。

修改后,邮件的MIME格式完全符合标准,Outlook同步已发送项时就能正确解析并渲染HTML内容,不会显示源代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:09:29