我的“忘记密码”页面(通过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的新手...谢谢!
A +
是保留的URL字符。您需要对查询字符串值https://www.php.net/manual/en/function.urlencode.php进行编码。
$body="http://localhost/myApp/resetPassword.php?frgt_psw_email=" . urlencode('[email protected]');