Send HTML email with php?

守給你的承諾、 提交于 2019-12-06 06:37:40

You need to send full headers with content type, not just mail_from. Heres an example

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= $mail_From . "\r\n";
mail($mail_To,$mail_Subject,$mail_Body,$headers);

http://www.w3schools.com/php/func_mail_mail.asp

In your code:

$mail_From = $From_email; $mail_To = $payer_email; $mail_Subject = $Subject_line; $mail_Body = $email_msg;

mail($mail_To, $mail_Subject, $mail_Body, $mail_From);

The $mail_From is the fourth parameter (headers). Create a new string that contains full headers for html email plus: $_From

$mail_From = $From_email;
$mail_To = $payer_email;
$mail_Subject = $Subject_line;
$mail_Body = $email_msg;
//start $headers
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; //adds content type to headers
$headers .= $mail_From . "\r\n"; //adds the sender details
mail($mail_To,$mail_Subject,$mail_Body,$headers); //sends the email

If you echo $headers it will be something like this

MIME-Version:1.0
Content-type:text/html;charset=iso-8859-1
From:email@email.com

Just put HTML in the mail body, and most mail clients should be able to figure it out.

A more correct answer would also include the appropriate Content-Type header in the mail (text/html).

A complete answer would be what I do:

<?php
$html = <<<HTML
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" value="text/html; charset=iso-8859-1" />
        <title>Title here</title>
    </head>
    <body>
        <p>My mail content here.</p>
        <hr />
        <p style="font-size: 8pt; font-style: italic;">Some signature here</p>
    </body>
</html>
HTML;
$text = preg_replace("(\n{2,})","\n",strip_tags(str_replace(Array("\t","<hr />"),Array("","===================="),$html)));
$seperator = uniqid();
mail("user@example.com","Title here",
        "--".$seperator."\r\n"
        ."Content-Type: text/plain\r\n\r\n"
        .$text."\r\n"
        ."--".$seperator."\r\n"
        ."Content-Type: text/html\r\n\r\n"
        .$html."\r\n"
        ."--".$seperator."--",
    "From: My name <me@example.com>\r\n"
    ."MIME-Version: 1.0\r\n"
    ."Content-Type: multipart/alternative; boundary=".$seperator);
?>

Not only does this send all the correct headers to leave no guesswork on the client, it also generates a plaintext version automatically for the users who don't want HTML emails.

Sending HTML Email through PHP uses the exact same mail function as text email:

mail($to, $subject, $message, $headers);

$to = 'bob@example.com';

$subject = 'Website Change Reqest';

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: susan@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$message = '<html><body>';
$message .= '<h1>Hello, World!</h1>';
$message .= '</body></html>';

Source and donwload available on css tricks

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!