0

我正在解决一个奇怪的问题。我想发送一封 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);

}
4

1 回答 1

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" />
于 2013-03-22T08:26:31.710 回答