How to use special characters in recipients name when using PHP’s mail function

mb_encode_mimeheader should do it, just as shown in the example:

mb_internal_encoding('UTF-8');

$name="山本";
$email="[email protected]";
$addr  = mb_encode_mimeheader($name, 'UTF-8', 'Q') . " <$email>";

For better compatibility you should set the header Mime-Version: 1.0 so all mail clients understand you’re using MIME encoding.

The final email headers should look like this:

To: =?UTF-8?Q?=E5=B0=81=E3=83=90=E3=83=BC?= <[email protected]>
Subject: =?UTF-8?Q?=E3=81=93=E3=82=93=E3=81=AB=E3=81=A1=E3=81=AF?=
Mime-Version: 1.0

Renders as:

To: 山本 <[email protected]>
Subject: こんにちは

Related: https://stackoverflow.com/a/13569317/476

Leave a Comment