0

私は奇妙な問題と戦っています。utf-8 でエンコードされた text/html メールを送信したいと考えています。mail() 関数は 1 を返しますが、システムはメールを送信していません。

含まれているリンクのすべての「://」を置き換えると、これが起こらないことがわかりました。するとメールが送られてきます。

同じサーバーの同じディレクトリに別のスクリプトがあり、リンクも含まれていますが、これは正常に機能します。

この問題の原因は誰にも分かりますか?


データベース (utf-8) からリンクを取得します。(「 http://www.example.com/blah 」のような通常のリンクのみ)

このコードを使用して電子メールが送信されることはありません。

while($line = mysql_fetch_array($data)){
  $url = $line['url'];
  $mailtext.= "<td><a href=\"". $url ."\">". substr($url, 0, 150)."</a></td>";  
}

これは機能します:

while($line = mysql_fetch_array($data)){
  $url = $line['url'];
  $strpos = strpos($url, "://");
  $urlpart1 = substr($url, 0, $strpos);
  $urlpart2 = substr($url, $strpos+3);
  $url = $urlpart1."---".$urlpart2;
  $mailtext.= "<td><a href=\"". $url ."\">". substr($url, 0, 150)."</a></td>";

}

これは私がメールを送信する方法です:

function mailInform($subject, $text){

    $mail = "mymail@example.com";

    if(get_magic_quotes_gpc())
    {
        $text = stripslashes($text);
    }

    $header = "From: something <something@myurl.org>\n";
    $header .= "Content-type: text/html; charset=UTF-8\n";
    $header .= "Content-Transfer-encoding: 8bit\n";
    $header .= "MIME-Version: 1.0\n";


    $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
    return mail($mail, $subject, $text, $header);

}
4

1 に答える 1

0

次のようにUTF-8変更ヘッダーとして送信する場合:

$header .= "Content-type: text/html; charset=UTF-8\n";
$header .= "Content-Transfer-encoding: 8bit\n";

に:

$header .= " Content-type: text/plain; charset=UTF-8\r\n";

また、html に html メタ タグを追加します。

<meta http-equiv="Content-Type" content="text/html charset=UTF-8" />
于 2013-03-22T08:26:31.710 に答える