PHP: Html send email in html format

2019-02-26 03:16发布

问题:

I am following a tutorial http://css-tricks.com/sending-nice-html-email-with-php/ to send mail in html format.

My string looks like

$message = '<html><body>';
$message .= '<img src="http://css-tricks.com/examples/WebsiteChangeRequestForm/images/wcrf-header.png" alt="Website Change Request" />';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= "<tr style='background: #eee;'><td><strong>Dear:</strong> </td><td>" . strip_tags($part_name). "</td></tr>";
$message .= "<tr><td><strong>.$user_name.has fixed an appointment with you on  :</strong> </td><td>" . strip_tags($time). "</td></tr>";
$message .= "<tr><td><strong>In:</strong> </td><td>" .  strip_tags($meeting_name) . "</td></tr>";
$message .= "<tr><td><strong>Please click on:</strong> </td><td><a href=" . strip_tags($approve_url). "</a> To approve</td></tr>";
$message .= "</table>";
$message .= "</body></html>";

//   CHANGE THE BELOW VARIABLES TO YOUR NEEDS

$subject = 'Appointment Request ';

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

But the received mail is not html formatted it is looking like

<html>
    <body>
        <img src="http://css-tricks.com/examples/WebsiteChangeRequestForm/images/wcrf-header.png" alt="Website Change Request" />
        <table rules="all" style="border-color: #666;" cellpadding="10">
            <tr style='background: #eee;'>
                <td>
                    <strong>Dear:</strong> 
                </td>
                <td>Depu</td>
            </tr>
            <tr>
                <td>
                    <strong>.pandit.has fixed an appointment with you on  :</strong> 
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <strong>In:</strong>
                </td>
                <td>anyp</td>
            </tr>
            <tr>
                <td>
                    <strong>Please click on:</strong>
                </td>
                <td>
                    <a href=http://192.168.0.178/UI/user/approvemeeting.php?meetingid=REG_939300945&key=3107</a> To approve
                </td>
            </tr>
        </table>
    </body>
</html>

Please tell me what i am doing wrong why the mail is not coming html formatted

回答1:

Use PHPMailer instead.

It allows you to send SMTP and normal emails (PHP's mail() function or expliciting all the SMTP params), and most important it lets you sepecify HTML message, plain text alternative message (but don't specify it otherwise some clients won't display the HTML one, such as bloody Lotus Notes).

It allows you to specify headers, mime, etc...

http://phpmailer.worxware.com/



回答2:

From:

$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, 'info@myserver.com', $pr_email, $subject, $message); $SMTPChat = $SMTPMail->SendMail(); 

You are never sending in the $headers var as such the email has no headers and as such the MIME type will not be read by the mail client on the other end.

I do not understand the SMTPClient class and judging form the tutorial I recommend you prolly shouldn't use it since it is opening a socket directly to the SMTP server. Also this class does not actually support custom headers which sucks. mail() will use your default SMTP server.