PHPから携帯へメール送信
いつもお世話になっております。
PHPから携帯電話へ"絵文字付き"でメールを送るプログラムを作成している
のですが、『base64_encode』等を使用して絵文字の表示までは行う事がで
きました。
ですが、本文が途中で途切れてしまうのです・・・。
PHP側は、
$to = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), 'SJIS', 'ISO-2022-JP');
$subject = mb_convert_encoding(mb_decode_mimeheader($structure->headers['subject']), 'SJIS', 'ISO-2022-JP');
(省略)
・
・
$body = $structure->body;
$body = preg_replace('/\s*>\s.*/', '', $body);
$body = mb_convert_encoding($body, 'SJIS', 'ISO-2022-JP');
//----------------------------------
// base64_encode
//----------------------------------
$subject = "=?shift_jis?B?" . base64_encode($subject) . "?=";
$body = base64_encode($body);
//----------------------------------
// ヘッダを作成
//----------------------------------
$headers = "From: test@mail.com\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain; charset=Shift-JIS\n";
$headers .= "Content-Transfer-Encoding: base64";
//----------------------------------
// メール送信
//----------------------------------
$res = mail($to, $subject, $body, $headers);
・
・
(省略)
上記のように記述しています。
メールは送れます。絵文字も表示されます。ですが、本文が途中で途切れ
てしまいます。
どなたかご教授をお願い致します。
補足
相手を特定できない場合であれば、Windows-31Jは確かに良くないと思います。 今回、Windows-31Jの使用を考えた理由は、以下になります。 1)相手は特定できる。ただし、どんなメーラーを使用しているかはわからない。*使用可能なメーラーをお願いすることが可能。 2)他のシステムに格納されている項目をメールに印字する必要がある。ただし、機種依存文字を使用しているかどうかは定かではない。その項目はお客様の会社名である。 私はケースバイケースだと思うのですが。 エンドユーザの立場という点でも、視点の違いが大きいような気がします。(CUIのメールを使用している人の立場で見るか、Windows、Outlookしか使用していない人での立場でみるか。) ISO-2022-JPでは表現できない名前の方もいたりしますし。(ハシゴ高等) ISO-2022-JPが一般的とはいえ、所詮日本でしか通用しないローカルルールだと思います。そういう意味では、Windwos-31Jも変わらないと思いますので、UTF-8も試してみたのですが、gooメールで文字化けを起こしたので、あまり一般的ではないのかなと思いあきらめた経緯があります。 個人的には、多くのメーラーがUTF-8をサポートする方向に進むべきではないかと思っています。 いろいろ反発されそうなことばかり書きましたが、現状、不特定多数の方に送る場合は、ISO-2022-JPのほうが良いというのは、同意いたします。