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