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

如何在PHP中使用PHPMailer向Gmail发送原始HTML代码且不被渲染

解决方法

问题原因

你开启了PHPMailer的HTML邮件模式,且直接将未做转义的HTML代码作为邮件内容传入,Gmail会将这部分内容识别为HTML结构进行渲染,因此不会展示原始代码。

操作步骤

  • 对要展示的原始代码做HTML实体转义,使用PHP内置的htmlspecialchars()函数将<、>、双引号等特殊字符转换为HTML实体,避免被邮件客户端解析为标签。
  • 将转义后的代码用<pre><code>标签包裹,保留代码的换行、缩进格式,也可添加内联样式提升可读性。
  • 也可直接关闭HTML邮件模式,直接发送纯文本内容,不过这种方式无法添加额外的排版格式。

修改后的代码示例

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$email_subject='my codes';
$recipient_email='reciever@gmail.com';
$recipient_name='Ann';
$sender_name='john';

// 原始待展示的代码
$original_code = "<html>
<script>
alert('This is your Code');
</script>
<body><p>
<b>Display as raw codes.</b>
</p>
</body>
</html>";

// 转义代码中的特殊HTML字符
$escaped_code = htmlspecialchars($original_code, ENT_QUOTES);

// 拼装邮件HTML内容
$mail_body = <<<HTML
<pre style="background: #f5f5f5; padding: 15px; border-radius: 4px; overflow-x: auto;">
<code>$escaped_code</code>
</pre>
HTML;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);
try {
    // 服务端配置保持不变
    $mail->setFrom('nancy@gmail.com', $sender_name);
    $mail->addAddress($recipient_email, $recipient_name);

    $mail->isHTML(true);
    $mail->Subject = $email_subject;
    $mail->Body = $mail_body;
    // 适配不支持HTML的邮件客户端
    $mail->AltBody = $original_code;

    $mail->send();
    echo 'Message successfully sent';
} catch (Exception $e) {
    echo "Message not sent. Error: {$mail->ErrorInfo}";
}
?>

如果不需要任何HTML排版,只想纯文本展示代码,直接修改配置即可:

// 关闭HTML模式
$mail->isHTML(false);
$mail->Body = $original_code;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:24:03