Sep 08, 2008, 10:53 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
modxcms.com web
  MODxCMS.com   Forums   Help Login Register  
Pages: [1] 2 3   Go Down
  Print  
Author Topic: 標準スニペットのContactFormから送ったメールが文字化けしてしまいます。  (Read 8628 times)
0 Members and 1 Guest are viewing this topic.
naoya
Member
**
Posts: 68

I love MODx!


« on: Mar 16, 2006, 03:20 AM »

PHPどころかシステムにも疎い初心者です。
標準スニペットのContactFormから送ったメールが文字化けしてしまいます。多分、文字コードの問題だと思うのですが、これを回避する方法はありませんか?
または、他のスニペットで回避出来るものはありませんか?
サーバーはxreaを使用しています。宜しくお願い致します。
Logged
takumi
Full Member
***
Posts: 109


WWW
« Reply #1 on: Mar 16, 2006, 03:34 AM »

とりあえず、
Code:
if (mail($to, $subject, $body, $headers)) {
って書いてある所を
Code:
if (mb_send_mail($to, $subject, $body, $headers)) {
として試してみてください。

ちなみに、これだけだと不完全な状態です。
とりあえずこれを試してみて、送られてきたメール本文とヘッダー情報を教えてください。
海外製CMSでは、メール送信で文字化けはデフォだと思ってください。 Grin
mail()を使ってるだけなので、文字化けの修正は簡単だと思います。
自分はまだそこまでサイトを構築する状態じゃないので、試していませんが問題視してません。
Logged
ZeRo
Sr. Member
****
Posts: 359



WWW
« Reply #2 on: Mar 16, 2006, 04:42 AM »

mb_send_mailの前に以下も追加しちゃってください。
Code:
mb_language("ja");

ついでに多分FROMが日本語だと化けると思うので、したのように修正しないと駄目かも
Code:
$headers = "From: ".mb_encode_mimeheader($from)."<$from_email>\r\n";
あ、ちなみにmb_languageはheadersより前の行に入れないと駄目です。

実際やってみてないのですが、多分、本文と題名はmb_send_mailでいけると思います。

Logged

甘党
naoya
Member
**
Posts: 68

I love MODx!


« Reply #3 on: Mar 16, 2006, 01:07 PM »

ご教授頂き有り難うございます。
さっき、打ち合わせから帰って来れたので、早速試させて頂きました。
Code:
if (mb_send_mail($to, $subject, $body, $headers)) {
として試してみてください。
で、本文で日本語が通るようになりました。
また、Fromの部分は
Code:
$headers = "From: ".mb_encode_mimeheader($from)."<$from_email>\r\n";
で日本語表示にすることができました。ただ、
Code:
mb_language("ja");
に変更するとエラーが出ます。入れるところを間違ったのでしょうか…
Code:
if (mb_send_mail($to, $subject, $body, $headers)) {
のところを
Code:
if (mb_language("ja");mb_send_mail($to, $subject, $body, $headers)) {
にすると言う意味ですよね?

一応、テストメールでは文字化けは無くなったので問題はなくなったのですが、もし間違っている様なご指摘を頂ければ幸いです。

私の様な初心者に分かりやすく教えて頂き感謝しています。有り難うございました。
Logged
takumi
Full Member
***
Posts: 109


WWW
« Reply #4 on: Mar 16, 2006, 10:00 PM »

Code:
if (mb_send_mail($to, $subject, $body, $headers)) {
のところを
Code:
if (mb_language("ja");mb_send_mail($to, $subject, $body, $headers)) {
にすると言う意味ですよね?
残念ながら使い方が違います。
takizさんが言ったのは、mb_send_mai()が含まれている行のって意味です。
うちのサーバーはこの設定をしなくてもmb関数が日本語設定になってるので問題ないのですが、mb_send_mail()関数はmb_language()を参照して言語を決るので、この設定がされてないサーバーでは、スクリプト側で言語設定しないと文字化けの問題が解消されない場合があります。
ただ今回はmb_language()を設定しなくとも問題無くメールが送信されたようなので、設定しなくとも良いかも知れません。
加えるならスクリプトの先頭の方で問題無いと思います。

今思い出したんですが、xreaサーバーってmb_language()の記述は必須だったような?
mamboの文字化け対策で使った記憶があります。
でも、今回は大丈夫みたいなんでxreaでもサーバーによって違うみたいですね? Huh
Logged
ZeRo
Sr. Member
****
Posts: 359



WWW
« Reply #5 on: Mar 17, 2006, 05:19 AM »

takumiさん、フォローありがとうございます。
その通りに、前ですので
mb_language("ja");
$headers = ・・・・ 略

という感じですね。
takumiさんがおっしゃるように、入れなくても大丈夫そうですので、なくてもかまわないかと思います。

日本のサブフォーラムができそうですねぇ  Smiley 
Logged

甘党
takumi
Full Member
***
Posts: 109


WWW
« Reply #6 on: Mar 17, 2006, 07:44 AM »

日本のサブフォーラムができそうですねぇ  Smiley 
なぜかここで反応。 Grin
ですねぇ~。
完全日本語でのフォーラムも欲しい所です。
ここはある程度の知識人の方には良いと思うんですが、自分のように初心者には敷居が高いです。(^^;
それと日本人ユーザーも増えてくれないと、有益な情報も得難いし。
って、このスレッドで話す話題じゃないですね。。。 Lips sealed
Logged
ZeRo
Sr. Member
****
Posts: 359



WWW
« Reply #7 on: Mar 17, 2006, 09:49 AM »

日本のサブフォーラムができそうですねぇ  Smiley 
なぜかここで反応。 Grin
ですねぇ~。
完全日本語でのフォーラムも欲しい所です。
ここはある程度の知識人の方には良いと思うんですが、自分のように初心者には敷居が高いです。(^^;
それと日本人ユーザーも増えてくれないと、有益な情報も得難いし。
って、このスレッドで話す話題じゃないですね。。。 Lips sealed
さらに追い撃ちにもこのレスに反応しちゃいました。
eastbindさんにお任せぇ と思って、eastbindさんのHPを見たら、どうやらモデレータ3人集まらないと・・
なんだそうです。
takumiさん、モデレーターになっちゃうとあとひとりなんですけど?(^^;;
ほかのひともどうですか?

英語弱いからなぁ おいら・・・ちょっと頼りないσ(^_^)。

このサブフォーラムの話が、rthrashさんからなかったら、ちょっとした簡易掲示板的なものをHPに作ろうかと思っていたのですが、やはり本家に日本フォーラムがあるといいですよねぇ
Logged

甘党
takumi
Full Member
***
Posts: 109


WWW
« Reply #8 on: Mar 17, 2006, 10:27 AM »

takumiさん、モデレーターになっちゃうとあとひとりなんですけど?(^^;;
ほかのひともどうですか?
さらにさらに追い討ち! Grin
(naoyaさんゴメンなさい)
自分は無理ムリ・・・(^^;
自分もそこまで英語が理解出来てないですよ。
eastbindさんともう一人英語が堪能な方がいれば、緊急時になんとかなると思うので、最後はスキルのある方(英語が話せなくても)がやれば良いと思いますよ。
自分は両方とも欠けてるので不可です。 Cheesy
って言うか、日本人ユーザーが少ないので選択枠は限りなく少ないのですが。(^^;

Logged
eastbind
Moderators
*
Posts: 252


This ideograph means LOVE! I love MODx.


WWW
« Reply #9 on: Mar 17, 2006, 11:38 AM »

naoyaさん
お使いのPHPのバージョンによっては、mb_send_mail()でも文字化けが発生する事があります。
http://d.hatena.ne.jp/t_komura/20051105
の「mb_encode_mimeheader() が正常に動作しない問題」以下を参照ください。
4.4.2あるいは5.1.0以降ならば問題ありません。もしもそれ以外のバージョンの場合、
Code:
        $body = "Name: $from\nEmail: $from_email\nMessage:\n\n" . $message;
        if (mail($to, $subject, $body, $headers)) {
の部分を以下のようにしてみてください。
Code:
        $body = "Name: $from\nEmail: $from_email\nMessage:\n\n" . $message;
        $subject = mb_encode_mimeheader(mb_convert_encoding($subject, "JIS"), "ISO-2022-JP", "B");
        $body = mb_convert_encoding($body, "JIS");
        $headers .= "Mime-Version: 1.0\r\n";
        $headers .= "Content-Type: text/plain; charset=ISO-2022-JP\r\n";
        $headers .= "Content-Transfer-Encoding: 7bit\r\n";
        $headers = mb_encode_mimeheader(mb_convert_encoding($headers, "JIS"), "ISO-2022-JP", "B");
        if (mail($to, $subject, $body, $headers)) {

takizさん、takumiさん。
日本語フォーラムの件は慌てなくてもいいと思ってます。
他の言語でもまだ動きは鈍いようですし、適任者が現れるまで気長に待ちましょう。
私なんか英検3級で、PHPは去年始めたばかりです。大した人間じゃないです。
Logged
naoya
Member
**
Posts: 68

I love MODx!


« Reply #10 on: Mar 17, 2006, 07:48 PM »

takumiさん、takizさん、eastbindさん、コメント有り難うございます。
phpやcgiといったプログラム部分は全くの素人ですので、知識と能力を持った方の助けを借りられて感謝しています。
実際、他のサーバーでの運用も考えているので、phpのバージョンによる動作の可否については非常に参考になります。
有り難うございました。

先週初めてMODxを知り、分かりやすさ(私は英語はからっきしですのでドキュメントは読んでいません)、使いやすさ、ユーザー管理の柔軟さなど、非常に気に入っています。
本気で使い倒そうと思うとphpの知識とかが必要になると思うのですが、やはりそれより先に(とりあえず簡単に使える)日本語のリファレンスなどをどうにかしたいと思います。言語ファイルでとりあえず日本語での説明が読めますが、それだけでは一般の人にとっては敷居が高いでしょうから…。全てを翻訳するのは無理ですが、出来る範囲から少しずつでも良いので手引書を作ってゆければと思います。

色々ご指導頂き有り難うございました。
Logged
ZeRo
Sr. Member
****
Posts: 359



WWW
« Reply #11 on: Mar 18, 2006, 12:51 AM »

そういえば、eFormのスニペットだとphpmailerを使っているので、あっちの方がよさげな気がします。
日本語にはそのまま使えないので対応修正をしないといけませんが、ちょっと手を入れ始めたまま放置していました。
ちゃんと動くようになったらお知らせしますね。

現在、subdomainのパッチで複数サイトを1つのMODxで・・・というのに取り組み中です。
Logged

甘党
takumi
Full Member
***
Posts: 109


WWW
« Reply #12 on: Mar 18, 2006, 04:20 AM »

naoyaさん、自分もプログラミングは畑違いなので、naoyaさんよりちょっとだけ知ってる程度ですよ。 Grin
まぁ~私の投稿した他のスレッド見れば一目瞭然なんですけどね。
ただ基本的な所は、皆さんに迷惑掛けないようにと、フォーラムの質を保つと言う意味で勉強したり調べたりしてます。 Wink

そういえば、eFormのスニペットだとphpmailerを使っているので、あっちの方がよさげな気がします。
個人的にphpmailerって好きじゃないんですよね。。。(^^;
マルチ言語対応なら良いと思いますが、今回はほぼ日本語使用を前提としてるので言語設定が日本語なら上記のメール送信ロジックで~・・・みたいな条件分岐の方が使いやすいかな?と思いますけど、どうでしょうか?
是非ご検討して頂きたいかなぁ~?(^^;

subdomain・・・良い情報ですね。(^^)
楽しみにしてます。

自分はF-boardって言うフォーラムの最新投稿を取得するスニペットを作成中・・・。
需要無いかも知れないけど。 Lips sealed
Logged
naoya
Member
**
Posts: 68

I love MODx!


« Reply #13 on: Apr 04, 2006, 11:38 PM »

皆様のお陰でメールは文字化けしない状態になり一安心していたのですが、次の壁に当たってしまいました。
それは…「検索」で日本語が通らないと言うことです。多分、またmb_stringの問題だと思うのですが、どこを修正すれば良いのか分かりません。
どうしても2バイトの文字の呪縛から逃れることができないのが辛いです(modxはかなり気に入っているのですが、joomlaやxoopsに心が揺れてしまいます) Cry

どなたか、検索での日本語の通し方を教えて頂けないでしょうか?
Logged
nobokonoko
Jr. Member
*
Posts: 46


« Reply #14 on: Apr 05, 2006, 12:42 AM »

なんか文字化けしちゃいました。
僕も検索できなかったけどFlexSearchForm with Ajaxを試しに使ったらできました。
と書きました。(訂正しました。)
« Last Edit: Apr 05, 2006, 12:51 AM by nobokonoko » Logged
Pages: [1] 2 3   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP

Copyright © 2005-2008 MODxCMS, All rights reserved. Contact Us
Styles by ziworks.com

Powered by SMF 1.1.4 | SMF © 2005, Simple Machines LLC

Valid XHTML 1.0! Valid CSS!