【发布时间】:2021-11-20 12:56:50
【问题描述】:
我试图将某些 php 变量作为可点击链接的一部分传递给通过 PhpMailer 发送。为此,我在这里引用了一个解决方案,但仍然无法使其正常工作 source
$site = 'http://example.com';
$user_id = 100;
$msg="Please Click links below.<br> <br>
<a href='$site/link1.php?id=$user_id'>Link 1</a><br><br>
<a href='$site/link2.php'>Link 2</a>";
$msg_body = "Here is your $msg";
这是我的问题:当我运行代码时,电子邮件已成功发送,但 link1 和 link 2 均不可点击。
下面是代码
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Load Composer's autoloader
require 'vendor/autoload.php';
// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);
$site = 'http://example.com';
$user_id = 100;
$msg="Please Click links below.<br> <br>
<a href='$site/link1.php?id=$user_id'>Link 1</a><br><br>
<a href='$site/link2.php'>Link 2</a>";
$msg_body = "Here is your $msg";
//PHP Mailer Server settings goes here
$mail->setFrom('henry@mysite.com', "Henry Good");
$mail->addAddress($reciever@gmail.com, 'Ann Ball); // Add a recipient
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'My Email Subject';
$mail->Body = $msg_body;
$mail->AltBody = $msg_body; // for Plain text for non-HTML mails
$sent = $mail->send();
【问题讨论】:
-
您是否检查过电子邮件的最终 HTML 以查看其是否有效 - 特别是链接的 HTML 和 href 属性的内容?您是否也使用多个邮件客户端对此进行了测试?
-
html 是有效的。问题是它不可点击。我认为是变量
$site和$user_id that导致了这个问题。如果我删除变量并尝试下面的<a href='http://example.com/link2.php'>This works</a>它可以工作。 -
好吧,你展示的代码会产生完全相同的输出(演示:sandbox.onlinephpfunctions.com/code/…),所以不清楚如何或为什么会阻止它工作......邮件客户端不知道无论您是硬编码链接还是使用 PHP 生成链接,随电子邮件发送的 HTML 在任何一种情况下都应该是相同的。您是否检查过电子邮件的原始源代码(大多数邮件客户端都有执行此操作的工具)以检查它是否确实包含您所期望的内容?
-
addAddress函数中缺少一些引号 -
ADyson 在上面写了合理的评论。请检查您的html是否有效。 @Nancy Moore,您能否在浏览器中打开您的结果并检查链接是否在那里正常工作?是否可以与我们共享源 html 输出?