简体   繁体   English

PHP 邮件未格式化 HTML

[英]PHP mail not formatting HTML

I'm trying to contain some HTML in an email receipt based off a form submission, however all the html in $message2 is being sent as plain text.我试图根据表单提交在 email 收据中包含一些 HTML,但是 $message2 中的所有 html 都以纯文本形式发送。

Code:代码:

$to = "no-reply@test.com"; // this is your Email address
    $from = $_POST['EMAIL']; // this is the sender's Email address
    $first_name = $_POST['FIRSTNAME'];
    $last_name = $_POST['SURNAME'];
    $subject = "subject";
    $subject2 = "subject";
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['PRODUCTNAME'];
    
  
    $message2 = 
    "<html>" .
        "<head>" .
    "<title>HTML email</title>" .
        "</head>" .
        " <table cellspacing='0' cellpadding='0' border='0' align='center' width='600' style='margin: auto;' class='email-container'>
    <tr>
        <td style='padding: 20px 0; text-align: center'>
            <img src='http://placehold.it/200x50' width='200' height='50' alt='alt_text' border='0'>
        </td>
    </tr>" . 
    " <tr> " . 
        "<td style='padding: 20px 0; text-align: center'>" .
            "Hi " . $first_name . "," . "\n\n" . "You have sucessfully registered " . $_POST['PRODUCTNAME'] . " (" . $_POST['PRODUCTCODE'] . ")" . "\n\n" .
            "Your registration code is " . $unixNow . "\n\n" . "If you have any queries or require assistance, please contact test@test.com" . "\n\n" . 
            "Please retain a copy of your email confirmation. " .
        " </td> " .
    " </tr> " .
    "<tr>
        <td style='padding: 20px 0; text-align: center'>
            <img src='http://placehold.it/200x50' width='200' height='50' alt='alt_text' border='0'>
        </td>
    </tr>" . 
        "</table>" .
    "</html>";

    // Always set content-type when sending HTML email
    $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

    
    $headers = "From:" . $from;
    $headers2 = "From:" . $to;
    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
    
?>

Can someone explain what i'm doing wrong and how to correct my error?有人可以解释我做错了什么以及如何纠正我的错误吗?

Your message #2 doesn't use your defined MIME/ContentType headers.您的消息 #2 不使用您定义的 MIME/ContentType 标头。 $headers = "From:". $from; would also overwrite those.也会覆盖那些。 Name your MIME/ContentType headers to a different name and add it to your message #2 headers:将您的 MIME/ContentType 标头命名为不同的名称,并将其添加到您的消息 #2 标头中:

// Always set content-type when sending HTML email
$htmlHeaders = "MIME-Version: 1.0" . "\r\n";
$htmlHeaders .= "Content-type:text/html;charset=UTF-8" . "\r\n";

$headers = "From:" . $from;
$headers2 = $htmlHeaders . "From:" . $to;
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM