PHP - 发送 HTML 电子邮件后变量中的未知字符


PHP - unknown character in variable after sending out HTML email

我正在用phpNuke开发一个用户注册模块,我遇到了一个我不知道这是什么的问题。

该函数应该做什么:

  1. 从用户注册表中获取所有数据,将其放入临时用户的MySql表中。
  2. 此时,将向站点管理员发送一封 html 电子邮件以供审批。
  3. 管理员通过 html 电子邮件中的链接批准此操作后,将向用户发送一封电子邮件,告知他们的帐户已获得批准。


    $check_num = md5($user_email);

if($creditcard == "1"){
            $finishlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=2";
        }else{
            $finishlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=1";
            $rejectlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=0";
        }

$from_admin = $adminmail;
$admin_header = "MIME-Version: 1.0" . "'r'n";
$admin_header .= "Content-type: text/html; charset=UTF-8" ."'r'n";
$admin_header .= "From: $from_admin" . "'r'n";
$admin_msg = "<html><head><title>Membership Request</title></head>"
."<body><b>Membership Request</b><br /><br />" 
."<table width='"500'" border='"0'">"
."<tr><td width='"150'">Country/Region :</td><td width='"350'">$region</td></tr>"
."<tr><td width='"150'">Company Name :</td><td width='"350'">$organization</td></tr>"
."<tr><td width='"150'">Email Address :</td><td width='"350'">$user_email</td></tr>"
."<tr><td width='"150'">Name :</td><td width='"350'">$fullname</td></tr>"
."<tr><td width='"150'">Title :</td><td width='"350'">$title</td></tr>"
."<tr><td width='"150'">Telephone :</td><td width='"350'">$phone</td></tr>"
."<tr><td width='"150'">Referral :</td><td width='"350'" valign='"top'">$referral</td></tr>"
."<tr><td width='"150'">Area of interest :</td><td width='"350'">$areaOfInterest</td></tr>"
."<tr><td width='"150'">Sign up for updates :</td><td width='"350'">$newsletter</td></tr>"
//."<tr><td width='"150'">Activate Member :</td><td width='"350'"><a href='"$finishlink'">YES</a>/<a href='"$rejectlink'">NO</a></td></tr>"
.'<tr><td width="150">Activate Member :</td><td width="350"><a href="'.$finishlink.'">YES</a>&nbsp;<a href="'.$rejectlink.'">NO</a></td></tr>'
."</table></body></html>";
$admin_subj = "Membership Request from ".ucwords($fullname).",".$region;
mail($adminmail,$admin_subj,$admin_msg, $admin_header);  

上面是发送HTML电子邮件的脚本,它在IIS环境中完美运行,但是当我将其迁移到网络解决方案上的Linux服务器时,$finishlink在$checksum变量中添加了"!"。 这只发生在 Linux 环境中。

从上面可以看到,$finishlink和$rejectlink几乎相同,区别是最后的&adminApproval=value。而这个"未知变量"只发生在$finishlink,$rejectlink很好。

我的电子邮件中的错误示例,终点链接:


http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=f17cde8f32a68d06af5301!  bda67653e4&adminApproval=1">YES

拒绝链接:

 
http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=f17cde8f32a68d06af5301bda67653e4&adminApproval=0">NO

如果有人能够为我指出正确的方向,我将不胜感激!我花了更多我应该花的时间在这上面。

据我所知,您的代码看起来不错,没有理由发生这种情况。

通用的答案是简化代码,直到到达失败的确切点。如果您不通过电子邮件发送正文,而只是在浏览器中显示或保存到文件中,是否正确?