ホーム > 日記 > PHPで絵文字、および、いわゆる「半角カナ」「機種依存文字」入りメールを送信するダーティーハック

PHPで絵文字、および、いわゆる「半角カナ」「機種依存文字」入りメールを送信するダーティーハック

mbstring.internal_encoding は UTF-8

Shift_JIS編


$to = 'test@docomo.ne.jp';
$from = 'from@example.jp';
$subject = 'あアア①'.pack('H*', 'EE98BE');
$body = 'あアア①'.pack('H*', 'EE98BE');
$headers = "From: ".$from;
$sendmail_param = "-f".$from;
$subject = '=?shift_jis?B?'.base64_encode(mb_convert_encoding($subject, 'cp932')).'?=';
$body = mb_convert_encoding($body, 'cp932');
mail($to, $subject, $body, $headers, $sendmail_param);

ダーティーなところ。
メールヘッダは78文字毎にCRLFで改行すべき(should)だが、しなければならない(must)じゃないので無視する。
mimeエンコードはクライアントが識別できるShift_JISするが、実際の文字コードはcp932を利用する。

ISO-2022-JP編


$to = ‘test@docomo.ne.jp’;
$from = ‘from@example.jp’;
$subject = ‘あアア’;
$body = ‘あアア’;
$headers = “From: “.$from;
$sendmail_param = “-f”.$from;
$subject = ‘=?iso-2022-jp?B?’.base64_encode(mb_convert_encoding($subject, ‘jis’)).’?=’;
$body = mb_convert_encoding($body, ‘jis’);
mail($to, $subject, $body, $headers, $sendmail_param);

PHP5.2.1以上の環境ならば「jis」→「iso-2022-jp-ms」にすると①等も送信できる。

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。