HTML电子邮件无法正确显示Godaddy基于Web的邮件

时间:2011-08-11 20:48:34

标签: php email godaddy

我使用以下PHP代码发送电子邮件。我在Outlook和其他地方测试过,一切都正确。但是,如果我将电子邮件发送给使用Godaddy基于Web的电子邮件查看器的人,则会遇到两个问题:

  • 不显示FROM电子邮件地址
  • 而不是显示HTML电子邮件,而是显示HTML代码

已经在多台计算机和浏览器上使用多个基于godaddy的帐户验证了这一点。

以下是我用来发送电子邮件的代码:

//build and send the email      
    $to = $email;
    $subject = 'Confirm your subscription';
    $message =( "<html>\r\n");
    $message .=( "<head>\r\n");
    $message .=( "<title>Confirm</title>\r\n");
    $message .=( "</head>\r\n");
    $message .=( "<body>\r\n");
    $message .=( "<h2>Thank You for registering</h2>\r\n");
    $message .=( "<p>To complete your registration, please click the link below.</p>\r\n");
    $message .=(" <p><a href=\"http://www.site.com/confirmation.php?confirm=$visitor_hash\">Click here to confirm your interest.</a></p>\r\n"); 
    $message .=( "</body>\r\n");
    $message .=( "</html>\r\n");

    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $headers .= "From: Site<info@site.com>\r\n";
    mail($to, $subject, $message, $headers);

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

经过大量搜索,发布和调整后,我找到了解决方案。我在用户评论的PHP Mail功能页面上找到了这个。

我改变了这三行:

$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "From: Site<info@site.com>\r\n";

$headers  ='"MIME-Version: 1.0' . PHP_EOL;
$headers .= 'Content-Type: text/html; charset=ISO-8859-1' . PHP_EOL;
$headers .= 'From: Site<info@site.com>' . PHP_EOL;

这解决了这个问题。

谢谢, 克里斯

答案 1 :(得分:0)

正确构建的HTML电子邮件实际上是一封MIME电子邮件,您不构建它。 mime-version标头是不够的。尝试使用SwiftmailerPHPMailer,这两种方法都可让您毫不费力地构建多部分电子邮件