Как создать элемент mailto HTML в PHP с URL-адресом с переменными GET в теле - PullRequest
0 голосов
/ 07 мая 2020

Я создаю элемент mailto HTML в своей программе PHP, и построенный код выглядит следующим образом:

    <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&amp;endJobnames=&amp;jobMask=&amp;collapseJobnames=&amp;searchDepth=1&amp;schedId=001&amp;custSchedule=&amp;cpColour=%23ffff00&amp;cpStartEndColour=%23ff0000&amp;grpBySuite=on&amp;maxNodes=500&amp;ranksep=0.5&amp;nodesep=0.25&amp;layout=dot&amp;splines=spline&amp;rankDir=TB&amp;graphStyle=Full&amp;bgColour=%23a8a8a8&amp;nodeColour=%23ffc68c&amp;fontColour=%23000000&amp;nodeStyle=filled&amp;penWidth=3%20Issue description :" target="_blank" class="btn btn-danger">Send Bug report</a>

Кнопка выглядит нормально, а URL-адрес отображается в статусе Панель, когда я наводил на нее курсор, выглядит нормально, хотя '&' отображается как '&', т.е. URL-адрес выглядит правильно.

Когда я нажимаю кнопку, я получаю новое электронное письмо с правильным адресом и темой, но тело просто:

Problem with graph http://mcz:51019/noSecurePhp/graphBuildTest.php?startJobname=PE2300DY+

т.е. отрезано по первому '&'.

Вот код, который создает элемент mailto (NL - это просто «
\ n» ):

function createBugbutton() {
    $invokingUrl = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $invokingUrl = str_replace(["&", "#", " "], ["&amp;", "%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;
}

Я скопировал сгенерированный HTML в пустой HTML файл, и он ведет себя точно так же, поэтому я не думаю, что это PHP вещь.

Что я делаю не так?

Изменить: после комментариев и ответов мой сгенерированный 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>

, но даже это скопировано в файл. html для создания электронного письма, тело которого снова останавливается после "PE2300DY"

Новое редактирование:

Работа в соответствии с принятым ответом - всем спасибо.

1 Ответ

1 голос
/ 07 мая 2020

Замените &amp; на %26

Я тестировал это, и он работает:

<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>

Ваша функция должна быть:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...