Welcome to a quick tutorial on how to send an HTML UTF-8 email in PHP. So you want to send out an HTML email in PHP? In a language that is not English? Yes, it is possible.
To send an HTML UTF8 email in PHP, we have to set the appropriate HTML and UTF-8 email headers. For example:
$to = "jon@doe.com";
$subject = "SUBJECT";
$body = "<html><body>This is an HTML mail.</body></html>";
$head = implode("\r\n", ["MIME-Version: 1.0", "Content-type: text/html; charset=utf-8"]);
mail($to, $subject, $body, $head);
That should answer the mystery, but let us walk through an actual example in this guide – Read on!
TLDR – QUICK SLIDES
Fullscreen Mode – Click Here
TABLE OF CONTENTS
PHP UTF-8 EMAIL
All right, let us now get into an example of sending the PHP UTF-8 email.
SENDING UTF-8 HTML EMAIL
<?php
// (A) UTF-8 MAIL FUNCTION
function umail ($subject, $body, $to, $cc=null, $bcc=null) {
// (A1) MAIL TO
if (is_array($to)) { $to = implode(", ", $to); }
// (A2) MAIL HEADERS
$head = [
"MIME-Version: 1.0",
"Content-type: text/html; charset=utf-8"
];
// (A3) CC & BCC
if ($cc !== null) { $head[] = "Cc: " . implode(", ", $cc); }
if ($bcc !== null) { $head[] = "Bcc: " . implode(", ", $bcc); }
// (A4) SEND MAIL
return mail($to, $subject, $body, implode("\r\n", $head));
}
// (B) SEND TEST MAIL
echo umail (
"Test Email",
"This is <strong>強い</strong>.",
"job@doe.com",
["joe@doe.com", "jon@doe.com"],
["jon@doe.com", "joy@doe.com"]
) ? "OK" : "ERROR";
Yep, this is pretty much just a fancy version of the introduction snippet. Packaged into the umail()
function so you can use it in your own project. This should be pretty self-explanatory, there are 5 parameters to feed into umail()
.
$subject
The subject.$body
The message itself.$to
– The recipient. Use a string for a single recipient, and an array for multiple recipients.$cc $bcc
The CC and BCC. Same as$to
, omit or usenull
if none.
HOW ABOUT CSS?
Yes, it is possible to append style="COSMETICS"
directly to the HTML tags. But take note that <style>
tags will probably not work… Depending on the email client.
DOWNLOAD & NOTES
Here is the download link to the example code, so you don’t have to copy-paste everything.
SUPPORT
600+ free tutorials & projects on Code Boxx and still growing. I insist on not turning Code Boxx into a "paid scripts and courses" business, so every little bit of support helps.
Buy Me A Meal Code Boxx eBooks
EXAMPLE CODE DOWNLOAD
Click here for the source code on GitHub gist, just click on “download zip” or do a git clone. I have released it under the MIT license, so feel free to build on top of it or use it in your own project.
EXTRA BITS & LINKS
That’s it for all the code examples, and here are some extras that may be useful to you.
LINKS & REFERENCES
- PHP Mail Reference Manual
- PHP Mail is not sending out? Here’s how to fix it – Code Boxx
- How to send out emails in bulk – Code Boxx
INFOGRAPHIC CHEAT SHEET

THE END
Thank you for reading, and we have come to the end of this tutorial. I hope that it has helped you to better understand mail in PHP, and if you have anything to share, please feel free to comment below. Good luck and happy coding!