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

PHPMailer传递PHP变量生成的URL链接无法点击问题求助

PHPMailer发送邮件链接无法点击修复方案

核心问题原因

  • 错误将带HTML标签的内容同时赋值给了AltBody:AltBody是给不支持HTML的邮件客户端使用的纯文本内容,直接放HTML标签会被当成纯文本展示,不会解析为可点击链接
  • 变量插值存在语法隐患:href属性用单引号包裹、变量没有明确插值边界,可能导致部分邮件客户端无法正确识别链接地址
  • 变量使用错误:$reciever@gmail.com写法不规范,变量和邮箱后缀拼接逻辑错误,同时reciever为拼写错误,正确拼写为receiver

修正后完整代码

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// 加载Composer自动加载文件
require 'vendor/autoload.php';

// 实例化PHPMailer,传true开启异常捕获
$mail = new PHPMailer(true);

$site = 'http://example.com';
$user_id = 100;
// 修正接收邮箱变量的拼写和拼接逻辑
$receiver = 'ann@gmail.com';

// 单独编写HTML版本正文,变量用大括号包裹明确插值范围,href用双引号包裹
$html_msg = "请点击下方链接:<br><br>
<a href=\"{$site}/link1.php?id={$user_id}\">链接1</a><br><br>
<a href=\"{$site}/link2.php\">链接2</a>";
$html_body = "以下是你需要的内容:{$html_msg}";

// 单独编写纯文本版本正文,不要带任何HTML标签
$plain_body = "请点击下方链接:\n\n
链接1地址:{$site}/link1.php?id={$user_id}\n
链接2地址:{$site}/link2.php";

// 此处保留你原有PHPMailer服务器配置即可
$mail->setFrom('henry@mysite.com', "Henry Good");
$mail->addAddress($receiver, 'Ann Ball');
$mail->isHTML(true); // 开启HTML格式解析
$mail->Subject = '我的邮件主题';
$mail->Body = $html_body; // HTML版本内容赋值给Body参数
$mail->AltBody = $plain_body; // 纯文本版本内容赋值给AltBody参数
$sent = $mail->send();

额外注意事项

  • 生产环境建议将站点域名升级为HTTPS协议,部分邮件客户端会拦截HTTP协议的链接
  • 测试时可先发送到主流邮箱验证可用性,若链接被屏蔽可将域名加入邮箱白名单测试

内容的提问来源于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.02 09:45:04