0

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

当我的 Commenst 得到像 " &, ", ' 这样的符号时,就会出现问题。它将停止执行剩余的部分代码

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

这是我的 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>';
4

2 回答 2

2

你把所有东西都放在一条线上,带你进入魔鬼厨房。而是将功能分开(例如,首先从数据库加载数据),然后处理数据(例如,构建邮箱名称、主题和正文),然后最后创建邮件 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));

然后你可以输出$url

printf('<a href="%s"><img src="images/mail.png" width="32" height="32" p="center"></a>',
        $url);
于 2012-04-04T08:12:06.297 回答
0

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

请注意,urlencode(php 命令)不会对所有内容进行 urlencode,例如下划线和字母以及可能的其他内容。

例子:

    $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/+_
于 2014-03-27T21:23:43.497 回答