0

こんにちは、タスク割り当てページを作成しています。このページでは、タスク管理者がタスクを作成した後、担当者にメールを送信してタスクを知ることができます。オフィスのSMTPメールアドレスが設定できないので、PHPのメール機能が使えません。だから私は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

あなたは悪魔のキッチンにあなたをもたらす1行にすべてを入れます. 代わりに、機能を分離し (最初にデータベースからデータをロードするなど)、データを処理し (メールボックス名、件名、本文を作成するなど)、最後にメール 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 に答える