PHP:mail()返回1,但邮件包括://时不发送邮件

时间:2013-03-22 07:44:52

标签: php email

我反对一个奇怪的问题。 我想发送一个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);

}

1 个答案:

答案 0 :(得分: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" />