我正在解决一个奇怪的问题。我想发送一封 utf-8 编码的文本/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);
}