Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:mailto函数在填充包含行和url的文本时中断_Php_Email_Mailto - Fatal编程技术网

PHP:mailto函数在填充包含行和url的文本时中断

PHP:mailto函数在填充包含行和url的文本时中断,php,email,mailto,Php,Email,Mailto,嗨,我正在创建一个任务分配页面,在该页面中,创建任务后,管理员可以向受让人发送邮件以了解任务。我无法使用PHP邮件功能,因为我无法配置office SMTP邮件地址。所以我使用mailto函数 当我的同伴得到像“&,,”这样的符号时,就会发生问题。它将停止执行代码的其余部分 在我的邮件中,它只填充第一行。所以我的评论被打破了 以下是我的mailto函数代码: <a href="mailto:'.mysql_result($result, $i, 'assignee').'@symantec

嗨,我正在创建一个任务分配页面,在该页面中,创建任务后,管理员可以向受让人发送邮件以了解任务。我无法使用PHP邮件功能,因为我无法配置office SMTP邮件地址。所以我使用mailto函数

当我的同伴得到像“&,,”这样的符号时,就会发生问题。它将停止执行代码的其余部分

在我的邮件中,它只填充第一行。所以我的评论被打破了

以下是我的mailto函数代码:

<a href="mailto:'.mysql_result($result, $i, 'assignee').'@symantec.com?subject= Task Assignment &body= %0D%0AHello%20'.mysql_result($result, $i, 'assignee'). '%0D%0A%0D%0ADescription%20%3A%20'.mysql_result($result, $i, 'comments'). .'%20%0D%0A%0D%0A%0D%0AFor%20more%20details%20Log%20in%20to%20%3A%20%0D%0A " ><img src="images/mail.png"  width="32" height="32" p = "center"></a>';
”;

你把所有东西放在一条线上,这会把你带进魔鬼厨房。而是将功能分开(例如,首先从数据库加载数据),然后处理数据(例如,生成邮箱名称、主题和正文),最后创建邮件URL

<?php

# load data from database
$assignee = mysql_result($result, $i, 'assignee');
$comments = mysql_result($result, $i, 'comments');

# process data
$mailbox = sprintf('%s@symantec.com', rawurlencode($assignee));
$headers = array(
    'subject' => 'Task Assignment',
    'body' => "Hello $assignee,\n\nDescription : $comments ...\n\nFor more details log in to ...",
);

# generate the mailto URL
$url = sprintf('mailto:%s?%s', $mailbox, http_build_query($headers));

您需要明确地对所有非字母数字的内容进行编码

注意,urlencode(php命令)不会对所有内容进行urlencode编码,例如下划线、字母以及其他内容

例如:

    $test="this: is it's dog/+_";
    echo "<br>";
    echo urlencode($test);
    echo "<br>";
    echo $test;

不确定标准具体规定了什么,但我怀疑您应该对URL中的值进行urlencode()编码。(您已经在手工操作了)Mailto不是一个函数,而是一个URI方案。根据规格建造它是你能做的最好的。但是,事情可能仍然不起作用。请尝试使用javascript escape()函数对邮件正文进行URL编码。但是,当注释包含符号“'&Why“But”?时会出现问题。这正是使用
http\u build\u query
的原因。
    $test="this: is it's dog/+_";
    echo "<br>";
    echo urlencode($test);
    echo "<br>";
    echo $test;
this%3A+is+it%27s+dog%2F%2B_
this: is it's dog/+_