人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP4でプログラムを作っています。
フォームで受けた内容を転送するプログラムです。

フォームのhtmlはEUCとSJISと両方あります。

mb_convert_encodingをつかい、JISに変換して、mb_send_mailで送っています。が、文字化けします。

subjectが最初の14バイト以降が文字化けします。
google等で検索しているのですが、上のJISエンコードしただけでよいというものや、base64を使ってmb_send_mailを使わないのがいいとか、いろいろあって迷っています。
これが決定版みたいな情報があったら教えてください。

●質問者: takeuchi_k
●カテゴリ:コンピュータ
✍キーワード:base64 EUC Google HTML JIS
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● ke_ishi
●23ポイント

http://google.com/

Google

URLはダミーです。質問に答える前に…

subjectの14バイト以降が、というのが理解できません。何か固定の文字列をsubjectの先頭に付加しているのでしょうか?

この文章からでは、subjectだけが文字化けしているのか、本文も文字化けしているのかよくわかりません。

◎質問者からの返答

subjectは固定で「○○からのお知らせです」みたいな文字を入れています。途中から化けます。

subjectは上のような文字化けで、本文はすべて化けています。

分かりにくい書き方ですいません。


2 ● ke_ishi
●23ポイント

http://google.co.jp/

Google

2回目ですが、私は

$mhead = sprintf(”From: %s”, mb_encode_mimeheader(’2バイトのサブジェクト’));

とやってます。

◎質問者からの返答

ありがとうございます。試してみます。


3 ● くいっぱ
●23ポイント

http://php.s3.to/man/function.base64-encode.html

base64_encode

ちょっとやってみただけですが…

自分はタイトルの文字化けは次のように解決しました。サブジェクトだけbase64でエンコード。

$subject = ”=?iso-2022-jp?B?”.base64_encode($subject).”?=”;

http://php.s3.to/man/function.mb-convert-encoding.html

mb_convert_encoding

本文はmb_convert_encodingでコンバートして、これらをmb_send_mailで送ります。

文字化けの問題はこれで解決するかと思います。

ちなみにヘッダーは

$header .= ”Content-Type: text/plain;charset=iso-2022-jp”;

mb_convert_encoding($message, ”iso-2022-jp”, ”auto”)

こんな感じで

if(mb_send_mail($address_to,

$subject,

mb_convert_encoding($message, ”iso-2022-jp”, ”auto”),

$header)){

これで送ります。

PHP不慣れなので見当違いだったら申し訳ない。

◎質問者からの返答

この方式は試してみたのですが、化けました。

この方式をとったときの届いたメールのヘッダを見ると、

MIME-Version: 1.0

Content-Type: text/plain;charset=ISO-2022-JP

Content-Transfer-Encoding: base64

Mime-Version: 1.0

Content-Type: text/plain; charset=ISO-2022-JP

Content-Transfer-Encoding: 7bit

と、いかにも怪しげに同じことが二回書いてありました。

単に私がタイプミス等をしている可能性も十分あるので、もっと試してみます。


4 ● dgeye
●23ポイント

http://php.benscom.com/manual/ja/function.mb-encode-mimehead...

PHP: mb_encode_mimeheader - Manual

mb_language(”ja”)が必要かどうかは自信が無いのですが(でも自分は入れてます)

subjectに関してはmb_convert_encodingの他にmb_encode_mimeheaderが必要ですがこれは入れました?

自分はこれで mb_send_mailで書いていますが、支障なく送られてきます

◎質問者からの返答

DBから送信者の情報(名前など)を引っ張ってきているのですが、EUCで入っていて、フォームのあるページはSJISですので、mb_convert_encodingにかける前に、文字コードを混在させてしまっているのかもしれません。

もっとよく見てみます。


5 ● toitaiki
●23ポイント

http://www.implant.ac/

インプラント ネット ‐ 歯科インプラントの総合専門サイト

インプラント療法といいます。

◎質問者からの返答

誤爆ですか?


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ