スレッド表示 | フラット表示〕 全トピック 920 件中 673 番目 次≫ ≪前

Send mailの文字化け

created: 2004-02-23 16:27 | modified: 2004-02-27 17:34 | reply: 4

[1316] Send mailの文字化け

user: PHP素人 | created: 2004-02-23 16:27
フリーのphp(sendmail)をダウンロードして
Flashのメールフォームに使っていますが、日本語がすべて文字化けしてしまいます。使ったのは下記のサイトからのDownloadしたものです。
http://www.flashkit.com/movies/Interfaces/Forms/Flash_MX-Mentaler-8880/index.php
どうしたら日本語でメールを受け取ることができますか?
reply: 1317 返信 編集 削除

[1317] 英語圏のスクリプト

user: ゆうじ | created: 2004-02-23 17:42
こんにちは。
問題のスクリプトをダウンロードしてみましたが、
英語圏の方が書かれたようで、
マルチバイト周りがまったく配慮されてませんでしたね。

日本語で正しくメールを送信するには、
●日本語のメールのエンコードはJISにする。
●ヘッダに日本語は不可なので、
 JIS + base64エンコードする。

などなどいくつかのポイントがあります。
先ずは、お手持ちの環境(PHPバージョンなど)、
特にmb_string関係の設定をお知らせください。
Parent: 1316  reply: 1323 1328 返信 編集 削除

[1323] Re:英語圏のスクリプト

user: PHP素人 | created: 2004-02-24 09:15
お手数おかけしてすみません。
ホストの環境設定は以下の通りです。
---------------------------------------------
PHPバージョン: PHP4.3.3(ApacheDSOモジュールとしてインストール)GD等はサポートしておりません。
Apacheバージョン: Apache1.3.29
Safe_mode: On
Register_globals: Off
Disable function: phpinfo,get_defined_vars,get_defined_functions,getallheaders,exec,
system,passthru,popen,fsockopen,openlog,pfsockopen,syslog
マルチバイト関数: サポート


---------文字コードについて---------
内部エンコーディングはEUCです。ソースコードがSJISの場合は、htmlのmetaタグのcharsetにて明示的にCHARSET=Shift_JISと、EUCの場合はCHARSET=EUC-JPと指定するようにしてください。
---------------------------------------------
Parent: 1317  reply: 1324 返信 編集 削除

[1324] mb_convert_encoding

user: ゆうじ | created: 2004-02-24 18:46
1.先ずはスクリプトの初めに以下を挿入。
02 | // デフォルトの言語をJapaneseとする
03 | mb_language("Japanese");

2.次に、本文に挿入されるテキストをJISに変換。
20 | // 文字コードを全てJISに変換
21 | $name = mb_convert_encoding( $name, "JIS", "auto" );
22 | $comments = mb_convert_encoding( $comments, "JIS", "auto" );
23 | // $sitename = mb_convert_encoding( $sitename, "JIS", "auto" );
24 | // ↑必要ならコメントアウトを削除

※ mb_convert_encoding の第3引数は、"auto" が
  適切なのかどうかが以下の設定により変わります。
 (これが一番知りたいところでした。)

// 例
output_handler = mb_output_handler
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.encoding_translation = On
mbstring.detect_order = auto

以上で本文は文字化けしなくなると思います。


メールヘッダ部に日本語を使う場合はまた別で、
JISに変換したものを、
さらに、base64 エンコードして、
さらに、

 =?iso-2022-jp?B? と ?= とで挟んでから、

メールヘッダに挿入する必要があります。
コードを見る限りでは、今回必要なさそうですね。
Parent: 1323  返信 編集 削除

[1328] うまく行きました!!

user: PHP素人 | created: 2004-02-27 17:34
ゆうじさんこんにちは。
大変お世話になりました!!
おかげでメール本文と送信者の名前が
ちゃんと日本語で送られるようになり、
いますごく感激です。
どうもありがとうございました。
私ももっとphpの勉強しなくちゃ。
Parent: 1317  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 673 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑