回答編集履歴
3
追記
answer
CHANGED
@@ -23,4 +23,19 @@
|
|
23
23
|
```としてみてはどうでしょうか?
|
24
24
|
|
25
25
|
あと、奇妙に思うのは、全体的にSJISで文字コードを統一しておられると思います。
|
26
|
-
ですので、subjectや本文は文字コードのコンバートがいらないと思います。`mb_send_mail`が勝手に、SJISからISO-2022-JPに変換します。
|
26
|
+
ですので、subjectや本文は文字コードのコンバートがいらないと思います。`mb_send_mail`が勝手に、SJISからISO-2022-JPに変換します。
|
27
|
+
|
28
|
+
さらに追記
|
29
|
+
--
|
30
|
+
Wikipedia ISO-2022-JP より
|
31
|
+
> また、符号化方式名をISO-2022-JPとしているのに、文字集合としてはJIS X 0212(補助漢字)やJIS X 0201の片仮名文字集合(いわゆる半角カナ)をも符号化している例があるが、**ISO-2022-JPではこれらの文字を許容していない。**これらの符号化は独自拡張の実装であり、中にはISO/IEC 2022の仕様に準拠すらしていないものもある。従って受信側の電子メールクライアントがこれらの独自拡張に対応していない場合、その文字あるいはその文字を含む行、時にはテキスト全体が文字化けすることがある。
|
32
|
+
|
33
|
+
となっていますので、mbstringが半角カナをうまくISO-2022-JPにコンバートできなくても、しょうがないような気がします。(mb_send_mailはISO-2022-JPにコンバートします。MS独自拡張ではありません)
|
34
|
+
どうしても、半角カナが送れないと嫌だ、という場合は、`ISO-2022-JP-MS`にすべてコンバートした上で、`mail`で送ればいいと思いますよ。
|
35
|
+
|
36
|
+
また、
|
37
|
+
```PHP
|
38
|
+
$msg = mb_convert_kana($msg, "KV", "SHIFT-JIS");
|
39
|
+
```とやって、半角カナから全角カナにコンバートしてやっても化けるとなると、おかしなことですね。
|
40
|
+
提供されているコードではそのようにしているところがありませんでした。
|
41
|
+
(やろうとしているのは`$header`に対してです。コメントアウトされてますけど)
|
2
追記
answer
CHANGED
@@ -20,4 +20,7 @@
|
|
20
20
|
|
21
21
|
```PHP
|
22
22
|
$header = "From: " .mb_encode_mimeheader("テスト", 'ISO-2022-JP-MS') ."<test@xx.dxxx.xx.jp>";
|
23
|
-
```としてみてはどうでしょうか?
|
23
|
+
```としてみてはどうでしょうか?
|
24
|
+
|
25
|
+
あと、奇妙に思うのは、全体的にSJISで文字コードを統一しておられると思います。
|
26
|
+
ですので、subjectや本文は文字コードのコンバートがいらないと思います。`mb_send_mail`が勝手に、SJISからISO-2022-JPに変換します。
|
1
追記
answer
CHANGED
@@ -8,4 +8,16 @@
|
|
8
8
|
本当にinternal encodingはUTF-8ですか?
|
9
9
|
|
10
10
|
どういう流れで使っているのか分からないので、何とも言えないです。
|
11
|
-
コードを切り出す際は、実際に症状が出ている状態で最小のコードを作っていただくと回答しやすいです。
|
11
|
+
コードを切り出す際は、実際に症状が出ている状態で最小のコードを作っていただくと回答しやすいです。
|
12
|
+
|
13
|
+
追記
|
14
|
+
--
|
15
|
+
やっぱり実際のコードとは違いましたね。
|
16
|
+
```PHP
|
17
|
+
$header = "From: " .mb_encode_mimeheader("テスト") ."<test@xx.dxxx.xx.jp>";
|
18
|
+
```ここで`mb_encode_mimeheader`に入れている「テスト」が実は半角なんですね?
|
19
|
+
`mb_encode_mimeheader`はinternal encodingのSJISでmimeエンコードされてしまいます。
|
20
|
+
|
21
|
+
```PHP
|
22
|
+
$header = "From: " .mb_encode_mimeheader("テスト", 'ISO-2022-JP-MS') ."<test@xx.dxxx.xx.jp>";
|
23
|
+
```としてみてはどうでしょうか?
|