[英]How to build a mailto HTML element in PHP with URL with GET vars in body
I'm building a 'mailto' HTML element in my PHP program and the constructed code is as follows:我正在我的 PHP 程序中构建一个“mailto”HTML 元素,构建的代码如下:
<a href="mailto:some.one@some.where.com
?Subject=CA-7%20graphing%20tool%20error report
&body=Problem with graph http://mcz:51019/noSecurePhp/graphBuildTest.php?startJobname=PE2300DY&endJobnames=&jobMask=&collapseJobnames=&searchDepth=1&schedId=001&custSchedule=&cpColour=%23ffff00&cpStartEndColour=%23ff0000&grpBySuite=on&maxNodes=500&ranksep=0.5&nodesep=0.25&layout=dot&splines=spline&rankDir=TB&graphStyle=Full&bgColour=%23a8a8a8&nodeColour=%23ffc68c&fontColour=%23000000&nodeStyle=filled&penWidth=3%20Issue description :" target="_blank" class="btn btn-danger">Send Bug report</a>
The button looks fine and the URL that shows in the status bar when I hover over it looks ok, although the '&' just shows as '&' ie the URL looks correct.该按钮看起来不错,并且当我在它上面使用 hover 时,状态栏中显示的 URL 看起来还不错,尽管“&”只是显示为“&”,即 ZE6B391A8D2C4D45902A23A8B6D 看起来是正确的。
When I click the button, I get a new email with the correct address and subject, but the body is just:当我单击该按钮时,我得到一个新的 email 具有正确的地址和主题,但正文只是:
Problem with graph http://mcz:51019/noSecurePhp/graphBuildTest.php?startJobname=PE2300DY+
ie cut off at the first '&'.即在第一个'&'处切断。
Here's the code that builds the mailto element (NL is just "这是构建 mailto 元素的代码(NL 只是“
\n"): \n"):
function createBugbutton() {
$invokingUrl = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$invokingUrl = str_replace(["&", "#", " "], ["&", "%23", "%20"], $invokingUrl);
$emailBody = "Problem with graph ".$invokingUrl.NL.NL."Issue description :";
$emailLink = '<a href="mailto:some.one@some.where.com
?Subject=CA-7%20graphing%20tool%20error report
&body='.$emailBody.'"
target="_blank" class="btn btn-danger"
>Send Bug report</a>';
echo $emailLink;
}
I have copied the generated HTML into a blank HTML file and that behaves exactly the same, so I don't think it's a PHP thing.我已将生成的 HTML 复制到空白 HTML 文件中,并且行为完全相同,所以我认为这不是 PHP 的东西。
What am I doing wrong?我究竟做错了什么?
Edit: following comments and answers, my generated HTML is now:编辑:根据评论和答案,我生成的 HTML 现在是:
<a href="mailto:some.one@some.where.com
?Subject=error report
&body=Problem with graph http://mcz/graphBuildTest.php?startJobname=PE2300DY&26;endJobnames=fred<br>
Issue description :" target="_blank" class="btn btn-danger"
>Send Bug report</a>
but even this cppied into an.html file file to build the email with the body again stopping after the 'PE2300DY'但即使这个 cpied 到一个 .html 文件文件中来构建 email 身体在“PE2300DY”之后再次停止
New edit:新编辑:
Working following the accepted answer - thanks all.按照公认的答案工作 - 谢谢大家。
Replace the &
替换
&
with %26
与
%26
I tested this and it works:我对此进行了测试,并且可以正常工作:
<a href="mailto:some.one@some.where.com
?Subject=CA-7%20graphing%20tool%20error report
&body=Problem with graph http://mcz:51019/noSecurePhp/graphBuildTest.php?startJobname=PE2300DY%26endJobnames=%26jobMask=%26collapseJobnames=%26searchDepth=1%26schedId=001%26custSchedule=%26cpColour=%23ffff00%26cpStartEndColour=%23ff0000%26grpBySuite=on%26maxNodes=500%26ranksep=0.5%26nodesep=0.25%26layout=dot%26splines=spline%26rankDir=TB%26graphStyle=Full%26bgColour=%23a8a8a8%26nodeColour=%23ffc68c%26fontColour=%23000000%26nodeStyle=filled%26penWidth=3%20Issue description :" target="_blank" class="btn btn-danger">Send Bug report</a>
Your function should be:您的 function 应该是:
function createBugbutton() {
$invokingUrl = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$invokingUrl = str_replace(["&", "#", " "], ["%26", "%23", "%20"], $invokingUrl);
$emailBody = "Problem with graph ".$invokingUrl.NL.NL."Issue description :";
$emailLink = '<a href="mailto:some.one@some.where.com
?Subject=CA-7%20graphing%20tool%20error report
&body='.$emailBody.'"
target="_blank" class="btn btn-danger"
>Send Bug report</a>';
echo $emailLink;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.