电子邮件中的特殊字符链接(php)

问题描述 投票:0回答:1

我的“忘记密码”页面(通过PHPMailer版本6.1.1)向用户发送电子邮件,并带有包含其电子邮件地址的链接。然后,他必须单击链接,这将打开我的“ resetPassword.php”页面,在该页面中,他可以根据链接中包含的电子邮件地址来重置密码。

可以正常工作,但不能使用包含加号(+)(或其他任何特殊字符的电子邮件地址)的电子邮件地址。

发送邮件的相关JS代码:

$body="http://localhost/myApp/[email protected]";

这正是收到的电子邮件中的链接。

到目前为止很好。

单击链接时,用户将转到“ resetPassword”页面,在此我要做的第一件事(出于调试目的)是:

echo $_GET['frgt_psw_email'];
exit();

我得到的是:xxxx [email protected]。如您所见,加号被空格替换,因此resetPassword功能不起作用。

我尝试用htmlentities替换+号,但这没有帮助。我也尝试过添加到我的PHPMailer参数中:

$mail->CharSet  = 'UTF-8';
$mail->Encoding = 'quoted-printable';

也没有帮助。

[请多多包涵-我是PHP和JS的新手...谢谢!

php hyperlink special-characters html-email
1个回答
2
投票

A +是保留的URL字符。您需要对查询字符串值https://www.php.net/manual/en/function.urlencode.php进行编码。

$body="http://localhost/myApp/resetPassword.php?frgt_psw_email=" . urlencode('[email protected]');
© www.soinside.com 2019 - 2024. All rights reserved.