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」
みたいな使い分けで考えていいかな?
文字コードよくわからん。