PHPでメール送信ロジックを作成しているのですがメールの件名が以下のソースで行うと38バイト目で文字化けが発生します。

$title=’【重要】株式会社テスト採用情報『プレエントリー確認』’;
$name_convert = mb_convert_encoding($title, ”ISO-2022-JP”, ”Shift_JIS”);
$name = mb_encode_mimeheader($name_convert, ”ISO-2022-JP”, ”B”);
なにか良い方法はありませんか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/06/02 19:29:47
  • 終了:--

回答(1件)

id:tociyuki No.1

水谷敏行回答回数12ベストアンサー獲得回数12005/06/03 00:37:57

ポイント40pt

ページ末尾のノーティス 30-Jul-2003 03:02 によると、mb_encode_mimeheaderにはバグがあり文字列を壊すことがあるため、先頭から36バイトごとに分割しながら使ったらどうでしょうと書いてあります。その例を元にして書き直したものです。私のPHP-4.3.11ではこれで正しく変換してくれます。

$title=’【重要】株式会社テスト採用情報『プレエントリー確認』’;

$string = mb_convert_encoding($title, ”ISO-2022-JP”, ”Shift_JIS”);

$name = ’’;

$pos=0;

$split=36; // after 36 single bytes characters, if then comes MB, it is broken

while ( $pos < mb_strlen($string,”ISO-2022-JP”) ) {

$output = mb_strimwidth($string,$pos,$split,””,”ISO-2022-JP”);

$pos += mb_strlen($output,”ISO-2022-JP”);

$name .= mb_encode_mimeheader($output,”ISO-2022-JP”, ”B”);

}

id:yashio

ありがとうございます。無事に解決しました。

2005/06/03 10:48:17

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません