11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メールの文字コードは「ISO-2022-JP-MS」じゃなくて「UTF-8」でもいいらしい

Last updated at Posted at 2019-04-06

PHPのメール送信で検索すると「ISO-2022-JP-MS」に文字コードを変換して送信するコードが多かったので
「ISO-2022-JP-MS」でないといけないと思い込んでいました。

#「UTF-8」でのメール送信

<?php
$defaultLanguage = mb_language();
$defaultEncoding = mb_internal_encoding();

mb_language('uni');
mb_internal_encoding("UTF-8");

$to = '送信先メールアドレス';
$subject = '件名';
$body = '本文';
$header = 'From: 送信元メールアドレス';

mb_send_mail($to, $subject, $body, $header);

mb_language($defaultLanguage);
mb_internal_encoding($defaultEncoding);

mb_language()の設定が'Japanese'になっているコードよく見るけど
'uni'に直した方が良さげ。(多分)
https://www.php.net/manual/ja/function.mb-language.php

#「UTF-8」と「ISO-2022-JP-MS」
そもそもなんで「UTF-8」で送信したかったかと言うと、「ISO-2022-JP」では第3、第4水準の文字に対応していないらしく、
人名を送信した時に「?」に文字化けする文字があったから。「UTF-8」だと文字化けせずに送信できた。

ただ、「UTF-8」はメーラーによっては対応していないものもあるらしいので、
古いガラケーとかにも対応したいなら「ISO-2022-JP-MS」の方がいいのかも。

SendGridでは「UTF-8」で送信しているみたいなので、一般的な環境では「UTF-8」で問題なさそうですが。
https://sendgrid.kke.co.jp/blog/?p=8400
https://sendgrid.kke.co.jp/blog/?p=10958

文字種に対応したいなら「UTF-8」
古いメーラーにも対応したいなら「ISO-2022-JP-MS」

みたいな使い分けで考えていいかな?
文字コードよくわからん。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?