私は奇妙な問題と戦っています。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);
}