PHP Mail正确的hotmail标头

时间:2015-02-18 22:14:00

标签: php sendmail html-email hotmail

问题很简单。每当我尝试从我的PHP服务器向Hotmail地址发送电子邮件时,它甚至都无法访问Hotmail INBOX以及它的SPAM文件夹。

我使用自定义函数进行电子邮件发送,但我猜有些标题可能不正确,或者它们应该按照一定的顺序排列?

function send_mail($from,$to,$subject,$body){
    global $sitename;
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    // Additional headers
    $headers .= 'To: $to' . "\r\n";
    $headers .= 'From: $sitename <$from>' . "\r\n";
    $headers .= 'Cc: $from' . "\r\n";
    $headers .= 'Bcc: $from' . "\r\n";

    $headers .= 'Reply-To: $from' . "\r\n";
    $headers .= "Return-Path: $from\n";
    $headers .= "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER['SERVER_NAME'] . ">\n";
    $headers .= "Date: " . date('r', time()) . "\n";
    if (mail($to,$subject,$body,$headers)) {return TRUE;} else {return FALSE;}
}

我检查了服务器,看它是否被列入黑名单。不是。

可能是什么问题?或者有人有一个经过测试的PHP邮件功能,可以使用hotmail吗?

由于

4 个答案:

答案 0 :(得分:2)

为什么你不通过phpmailer发送?只需在您的域中创建一个Gmail帐户或您自己的电子邮件帐户。

gmail帐户示例:

require("phpmailer/class.phpmailer.php");

function send_mail($fromEmail, $fromName, $subject, $body)
{

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->SMTPDebug = 0; // 1 tells it to display SMTP errors and messages, 0 turns off all errors and messages, 2 prints messages only.
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "ssl";
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 465; // or 587
    $mail->Username = "youremail@gmail.com";
    $mail->Password = "yourpassword";
    $mail->From = "youremail@gmail.com";
    $mail->FromName = "yourname";
    $mail->AddAddress($fromEmail, $fromName);
    $mail->AddReplyTo("youremail@gmail.com", "yourname");

    $mail->WordWrap = 50;                                 // set word wrap to 50 characters
    // $mail->AddAttachment("/folder/file.zip");         // add attachments
    $mail->IsHTML(true);                                  // set email format to HTML

    $mail->AddEmbeddedImage('img/logo.png', 'logo'); //if you need a logo signature
    $mail->Subject = $subject;
    $mail->Body    = $body."<br/><br/><a href=\"http://www.yourwebsite.com\"><img src=\"cid:logo\" alt=\"You website title\"></a>";

    // $mail->AltBody = "This is the body in plain text for non-HTML mail clients ;-)";
    $mail->Send();
    if($mail->Send())
    {
        return true;
    }
    else
    {
        return false;
    }

}

更多信息:http://phpmailer.worxware.com/?pg=examplebgmail

答案 1 :(得分:1)

SPF记录是一种域名服务(DNS)记录,用于标识允许哪些邮件服务器代表您的域发送电子邮件。

SPF记录的目的是防止垃圾邮件发送者在您的域中发送带有伪造的发件人地址的邮件。收件人可以参考SPF记录来确定声称来自您的域的邮件是否来自授权邮件服务器。

如果您的域没有SPF记录,则某些收件人域可能会拒绝来自您用户的邮件,因为他们无法验证邮件是否来自授权邮件服务器。

出站网关的SPF记录

如果您决定启用电子邮件网关功能,则需要确保SPF记录中包含Google服务器和出站网关SMTP服务器地址。

For some more details you can check this link

答案 2 :(得分:1)

可能由于我们托管我们的php文件的服务器而发生。

我也遇到了同样的问题。但是我的问题是由Dreamhost服务器引起的。它是从hotmail服务器列出的黑色。

解决方案是我购买了mailjet用于发送电子邮件。

答案 3 :(得分:0)

你有SPF记录吗? Hotmail会阻止没有SPF记录的域名

you can make one here