HTML电子邮件使用PHP以纯文本形式发送

Mar*_*rty 1 php email

我有这个代码通过PHP发送电子邮件:

// Prepare email.
$headers = "From: Mi9 Vault <info@mi9vault.com.au>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=ISO-8859-1";

$msg = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/edm/confirmation.html');
$msg = str_replace('{first_name}', $contact["First Name"], $msg);


// Send email
mail($contact["Email Address"], "Your Mi9 Registration is Confirmed", $msg, $headers);
Run Code Online (Sandbox Code Playgroud)

confirmation.html 是我们设置的HTML电子邮件.

我以前从未遇到过上述用于发送电子邮件的PHP代码的任何问题,但我似乎可以回过头来看的是一封包含所有HTML而不是实际的HTML格式电子邮件的电子邮件.

基本上我收到一封电子邮件,内容如下:

MIME-Version: 1.0

Content-type: text/html; charset=ISO-8859-1
Message-Id: <20120418080325.C643B407EF@ds3219.dreamservers.com>
Date: Wed, 18 Apr 2012 01:03:25 -0700 (PDT)

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
        .....
Run Code Online (Sandbox Code Playgroud)

我在同一主机的另一个网站上有相同的PHP代码,它工作正常...

Ale*_*s G 7

从某种程度上看,在标题的每两行之间有额外的换行符.它是如何实现的,我不确定,因为你的代码没有把它们放在那里.接收邮件服务器可能以某种方式搞砸了,并将其解释\r\n为两个换行符而不是一个换行符.首先,我会删除\r只留下\n来看看会发生什么.我知道这不适合每个RFC - 但从这开始.

为了让您感觉更好,我使用了非常相似的代码 - 并且电子邮件正确传递.