MIMEヘッダの文字列をエンコードする(mb_encode_mimeheader)

広告

メールのMIMEヘッダに設定する文字列をエンコードする方法を確認します。「mb_encode_mimeheader」関数を利用します。

mb_encode_mimeheader() は、MIME ヘッダ エンコーディング方式によって文字
列 str をエンコードします。この関数は、ASCII 表現の文字列を返します。

引数:
  $str  対象の文字列
  $charset  文字エンコーディング名。デフォルトはISO-2022-JP。
  $transfer_encoding  MIME エンコーディングの方式を指定します。
    "B" (Base64) または "Q" (Quoted-Printable) のどちらか。デフォルト
    は"B"です。
  $linefeed  EOL(行末)のマーカで、 mb_encode_mimeheader() が行を折り
    たたむ(RFC 用語で、ある一定より長い行を複数行に分割することを言い
    ます。分割する長さは現在 74 文字に固定されています)際に利用します。
    デフォルトは "¥r¥n" (CRLF) です。
戻り値:
  エンコードされた文字列

MIMEヘッダ内で使われる文字列をエンコードします。基本的にはISO-2022-JPのBase64でエンコードすればいいので引数は対象文字列だけを指定しても問題無いと思います。

具体的には次のように記述します。

$name = "日本語の名前";
print($name."<br>");

$name = mb_encode_mimeheader($str);
print($name."<br>");

サンプルプログラム

では実際に試して見ます。

mbencodemimeheader.php

<html>
<head><title>PHP TEST</title></head>
<body>

<p>MIMEエンコーディング</p>

<?php
$subject = "日本語サブジェクト";
print($subject."<br>");

$subject = mb_encode_mimeheader($subject);
print($subject);
?>

</body>
</html>

上記ファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。

mb_encode_mimeheader

( Written by Tatsuo Ikura )