PHPMailer如何在纯文本版本中保留链接?
解决PHPMailer自动生成纯文本版本时丢失链接的问题
我最近在用PHPMailer发送包含2个(后续还要加第3个)链接的简短HTML邮件时,踩了个小坑:当使用$mail->MsgHTML($htmlmsg);方法时,虽然它能自动生成对应的纯文本版本,但所有链接都“失踪”了——只留下链接显示的文字,完全看不到实际的URL地址,这对纯文本邮件用户来说太不友好了。
后来我换了一种思路,手动分别设置HTML正文和纯文本正文,再借助preg_replace把HTML里的链接转换成纯文本里易读的格式,完美解决了链接丢失的问题。具体代码如下:
// 设置HTML版本的邮件内容 $mail->Body = $htmlmsg; // 将HTML中的<a>标签转换为纯文本格式:"链接文本 (URL地址)" $textstr = preg_replace('/<a href="([^"]+)">([^<]+)<\/a>/', '$2 ($1)', $htmlmsg); // 设置纯文本版本的邮件内容 $mail->AltBody = $textstr;
这种方式的好处是,HTML邮件能保持原本的样式,纯文本邮件里的链接会以「链接文本 (实际URL)」的形式呈现,用户不管是复制还是直接点击(部分邮件客户端支持纯文本链接跳转)都很方便。
内容的提问来源于stack exchange,提问作者Tim Dawson
相关产品推荐
相关产品推荐

