PHP:邮件()返回1,但不发送邮件时邮件包括://
问题描述:
我反对一个奇怪的问题。 我想发送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);
}
答
,如果你把它作为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标签:
<meta http-equiv="Content-Type" content="text/html charset=UTF-8" />
+0
没有变化 – Manuel 2013-03-22 08:54:33
好,如果你想表明,实际发送邮件的代码,我们会看到你很可能不会正确地逃避你的字符串 – 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