我反對一個奇怪的問題。 我想發送utf-8編碼的文本/ html電子郵件。 mail()函數返回1,但系統不發送郵件。PHP:郵件()返回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 = "[email protected]";
if(get_magic_quotes_gpc())
{
$text = stripslashes($text);
}
$header = "From: something <[email protected]>\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);
}
好,如果你想表明,實際發送郵件的代碼,我們會看到你很可能不會正確地逃避你的字符串 – Najzero 2013-03-22 07:49:03
鏈接是否包含一些不使用UTF-8編碼的符號?嘗試echo'substr($ url,0,150)' – 2013-03-22 08:07:16
我不確定所有的鏈接,但我有一個嘗試,它似乎也會發生這樣簡單的:「http://www.example。 com「 - 裏面沒有非utf8符號 – Manuel 2013-03-22 08:25:09