Jul 05, 2009, 09:24 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
Search via SMF or Google: modx forums all of modxcms.com web
  MODxCMS.com   Forums   Help Login Register  
News:Donate to MODx: Donations
Pages: [1] 2 3   Go Down
  Print  
Author Topic: メール送信で文字化けする件について報告するスレ  (Read 8680 times)
0 Members and 1 Guest are viewing this topic.
MEGU
Committed to MODx
*****
Posts: 873



WWW
« on: Dec 18, 2007, 03:00 AM »

みなさまこんにちは。

先日より、snippetを利用してメール送信した際に受け取ったメールが
文字化けしているという報告があがっています。
---*---*---*---*---*---
2008.02.06 現在

Jotのメール通知が文字化けする...未決 解決策あり...解決策はこちらに記載しました

Newsletter スニペットで送信内容などが文字化け ... 2007.12.20 解決策あり(リンク先に記載)
ご助言ありがとうございました Cheesy

管理画面へのログイン画面にあるパスワード忘れたメールのタイトルが化ける...解決策こちら
 それと、htmlメールになってたみたいなので、textで送られるようにしてみました。

・WEBユーザからのパスワード変更リクエストに対して送信されるメールが化ける...調査中

---*---*---*---*---*---

私は、これまでのMODxのいきさつのことが実は良くわかっていないので、
yamaさんに確認しましたところ、メール送信に関しては、まだ日本語の環境で上手く送信できるような
手段についてこちらのフォーラムでもあがっていないよう...です。したがって、今後の課題として
なんとかクリアしたいと考え、このようなスレッドを立てました。

こちらで、tkmfさんも少しふれてらっしゃいますが、
http://modxcms.com/forums/index.php/topic,20922.msg129374.html#msg129374
何かワンクッションなりツークッションなりかますことで、日本語の環境でもメール送信が
上手く動作するようにならないでしょうか。

スニペットごとに対応するということより、できれば、コアのどこかになにかくわえるなりして、
おおかたのメール送信が正常に動作するようになることが望ましいと考えるのですが、
どんなものなのでしょうか。。自分ではプログラムがわからないので、なんともしようがありません。。

具体的にここのところをこうしたら...?みたいなのがまとまれば、コアチームに申し出てみたいと
考えているのですが。。みなさまどうぞご協力をお願い致します。。

それと、現在わかっているメール送信に関する不具合(特に文字化け関係)がありましたら、
こちらに報告して頂けるとうれしいです。あわせてよろしくお願い致します。
« Last Edit: Feb 09, 2008, 11:58 PM by MEGU » Logged
ZeRo
Sr. Member
****
Posts: 426



WWW
« Reply #1 on: Dec 18, 2007, 07:48 AM »

JotもNewsletterも使ってないんですが、ほかのスレを見ると単にmail関数を使っているのでマルチバイト対応のメールが送れないということですね。
できれば、phpMailerとかクラスを使ってもらえばえとりあえずUTF-8ならUTF-8メールでいけるのでOKになるかと思います。
どうせなら、eFormのMODxmailerみたいにphpMailerを被せてもらうとありがたいんですが、日本語圏だけの問題でもあるので難しいかもです。
とりあえず、現状のスニペットの場合は・・・・
mail関数をmb_send_mailに置き換えてはどうでしょう??
mb_language("japanese");
mb_send_mail(引数はmail関数と同じ)

これでダメだとmb_send_mailの前にmb_internal_encoding($modx->config['modx_charset'])とか付けてみるとか・・。
さらにそれでもダメなときは、個々にphpMailer(MODxmailer)のクラスを使う方法で手直しかなぁ
WebSignupもmail関数ではなかったでしたっけ?? 管理画面のも?? 
使ってない部分にかなり疎かったりしますが・・・。 Cry
Logged

MEGU
Committed to MODx
*****
Posts: 873



WWW
« Reply #2 on: Dec 18, 2007, 08:21 AM »

ZeRoさん。どうもありがとうございます。

方向性としては、スニペットごとに日本で独自に対応した方が良い...のでしょうか。
管理画面から送ってくるメールも自分では、日本語の文章で試したことないので試してみます。

Quote
どうせなら、eFormのMODxmailerみたいにphpMailerを被せてもらうとありがたいんですが、日本語圏だけの問題でもあるので難しいかもです。

eFormは、オリジナルからそのような処理がしてあるということなんですね。。
すみません。確認なのですが。。
これは、マルチバイト言語圏ということでなく、日本語圏に限られる問題?なのでしょうか。。
Logged
ZeRo
Sr. Member
****
Posts: 426



WWW
« Reply #3 on: Dec 18, 2007, 09:14 AM »

MODxMailerは一応ほかの言語も意識はしているんですけど、日本みたいに変わったコードの使い分けをしてない場合は実際にはphpmailerにスルーです。
一応英語でもそのまま動くようにはなっています。

0.9.7のMODxmailerのクラスとは違いますが、あれにeFormの日本語部分を追加修正すれば使えるかなぁと思います。

いずれにしろ、ISO-2022-JP版は日本独自の修正じゃないかと思っているので(ほかの国の事情は詳しくはないですが、多分・・・)、個々に対応かなと思います。

0.9.7でMODxmailerクラスを利用するようにスニペットさんも置き換われば、手直しはこのMODxmailerだけになるんですけどね。
Logged

Cassiopeia
Jr. Member
*
Posts: 11


« Reply #4 on: Dec 18, 2007, 12:27 PM »

こんにちは。
ZoRoさんもおっしゃっていますが、mail関数そのまま使うと日本語を含むメールは文字化けしてしまいますね。
スニペット内でmail関数つかっているものだと、個別に対応しないといけなくなってしまいますし・・・

スニペットで動作確認したわけではありませんが、phpでメールを送る際に私は下のコードのようにすることが多いです。

Code:
mb_language('ja');
mb_internal_encoding("UTF-8");
$enc_header = "From: ". mb_encode_mimeheader("問い合わせメール","JIS", "B")." <info@xxxx.com>";
//ヘッダーに追加するものがあれば $enc_header .= "...\r\n" で足していく
mb_send_mail($to, $subject, $message, $enc_header );

headerの内容によっては$enc_headerは変更が必要かもしれません。

Newsletterのスニペットの場合だと、326行の 'iso-8859-1' を 'iso-2022-jp'に変更して、384行と391行のmail関数を下のものに置き換えればいける、かも。動作未確認です Grin
Code:
mb_language('ja');
mb_internal_encoding("UTF-8");
mb_send_mail($toemail[$i], $subject, $content, $headers);

間違いが含まれているかもしてませんが、参考になれば Smiley

#コードに余計なものが含まれていたので修正
« Last Edit: Dec 18, 2007, 12:44 PM by Cassiopeia » Logged
yamakatsu
Jr. Member
*
Posts: 12


« Reply #5 on: Dec 18, 2007, 10:01 PM »

みんさん、こんにちわー。

やはり一筋縄ではいかないみたいですね。
色々、対応ありがとうございます。

Cassiopeiaさんありがとうございます!、ご提案のあった書き換えですが今やってみました。
…が、書き換えた場合メッセージの配信自体が行われなくなりました。

Logged
tkfm
Committed to MODx
*****
Posts: 843


WWW
« Reply #6 on: Dec 18, 2007, 10:49 PM »

こんにちは~
0.9.7のMODxmailerのクラスとは違いますが、あれにeFormの日本語部分を追加修正すれば使えるかなぁと思います。
バグトラックを漁っていたのですが、こんなのを見つけました。

この一番下のJason(OpenGeek)氏のコメント(2007/11/21付け)ですが... 超訳 Tongueすると...

0.9.7向けに開発している(メール送信の)やり方って、0.9.6.2に実装しようと思えばできるよね~
0.9.7の実装を開始したら、もっと詳細について書き込むよ。


と言っているように思います。

この開発の内容が具体的になったら、その中で日本語(ISO-2022-JP)への対応要望を上げていくと良いのでは?
Logged
MEGU
Committed to MODx
*****
Posts: 873



WWW
« Reply #7 on: Dec 19, 2007, 08:49 PM »

みなさま。ありがとうございます。

>tkfmさん。情報ありがとうございます。
そうですね。。0962時点で、ZeRoさんがおっしゃっているMODxmailerが
実装される気配ありですね。早い時期に各スニペットの作者さんが、切り替えに
踏み切って下さると嬉しいですね。。
Logged
MEGU
Committed to MODx
*****
Posts: 873



WWW
« Reply #8 on: Dec 21, 2007, 02:58 AM »

参考スレッド:
標準スニペットのContactFormから送ったメールが文字化けしてしまいます。
(これは日本語フォーラムができる前のスレでしょうか...)
WebSignupでのユーザー登録 で送信されるメールが化けている...解決策あり?要確認
« Last Edit: Dec 21, 2007, 03:02 AM by MEGU » Logged
MEGU
Committed to MODx
*****
Posts: 873



WWW
« Reply #9 on: Dec 21, 2007, 03:38 AM »

Jotのメール送信で文字化けする件解決しました Cheesy >...ちょっとウソです。サブスクリプションが上手くできていません。

※2007.12.21 お騒がせして済みません。上手くできました。

jot.class.inc.php の以下を変更しました。

Code:
// Notifications

function doNotifySubscribers($commentid=0) {
global $modx;
if ($this->config["subscription"]["enabled"]) {
mb_language('ja'); // 挿入
mb_internal_encoding($modx->config['modx_charset']); // 挿入

... 中略...

$message = $tpl->Render();
mb_send_mail($user["email"], $this->config["subject"]["subscribe"], $message, "From: ".$modx->config['emailsender']."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); // mb_send_mail に変更
}
}
}
}

// Moderator Notification

function doNotifyModerators($commentid=0) {
global $modx;
if ($this->config["moderation"]["notify"]) {
mb_language('ja'); // 挿入
mb_internal_encoding($modx->config['modx_charset']); // 挿入

... 中略...

$message = $tpl->Render();
mb_send_mail($user["email"], $this->config["subject"]["moderate"], $message, "From: ".$modx->config['emailsender']."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); // mb_send_mail に変更
}
}
}
プログラム全くと言っていいほどわかってません。前回のNewsletter での修正を参考にさせて頂きました。
愚かなことをしておりましたら、どうぞご指摘下さい。。

---*---*---*---*---*---
サブスクリプションの方がうまくいってません。。なぜでしょう...??
« Last Edit: Feb 19, 2009, 08:05 AM by MEGU » Logged
MEGU
Committed to MODx
*****
Posts: 873



WWW
« Reply #10 on: Feb 06, 2008, 02:52 AM »

管理画面へのログイン画面で、パスワード忘れたリンクがありますが、
そこから送信されるメールのヘッダが文字化けしていたりしたので、直してみました。

それと、content-type がtext/html だったので text/plain にしました。
(text/htmlのままにしました 2008.2.7)。

うちはメーラーがOEなのですが、これで文字化けせずに上手い具合に送信されてきます。
でも、他のメーラーの場合は、もしかしてうまくいかないのかな。。
いちお、携帯でも受信確認しました。

修正するのは、Forgot Manager Login プラグインです。

でも、これってインストーラが自動でインストールするんですよね。
もし、対応してもらう場合は、インストーラーに組み込んでもらわないと
いけないですね。

あと、これのFromをサイト名にしたい場合は、どうしたらいいのでしょうか。。

---*---*---*---*---*---
エラーが出ていたので、修正しました。2008.2.7
ZeRoさんが修正版を作って下さいましたので、そちらをご利用下さい。2008.2.9
 http://modxcms.com/forums/index.php/topic,20954.msg139373.html#msg139373
« Last Edit: Feb 09, 2008, 11:56 PM by MEGU » Logged
MEGU
Committed to MODx
*****
Posts: 873



WWW
« Reply #11 on: Feb 09, 2008, 08:58 AM »

管理画面へのログイン画面で、パスワード忘れたリンクから送信されるメールが
文字化けする件ですが、ZeRoさんが作って下さったので、そちらをアップいたします。
(私が作ったのは、微妙にアヤシイです...)。

尚、こちらのプラグインは、オリジナルが「Content-type: text/html」になっています。
修正後のContentTypeもtext/html のままとなっています。ので、「text/plain」が良い場合は、
適時、コードを修正してください。

またその際は、以下の部分から
Quote
$body = <<<EOD
<p>{$_lang['forgot_password_email_intro']} <a href="{$modx->config['site_url']}manager/processors/login.processor.php?username={$user['username']}&hash={$user['hash']}">{$_lang['forgot_password_email_link']}</a></p>

<p>{$_lang['forgot_password_email_instructions']}</p>

<p><small>{$_lang['forgot_password_email_fine_print']}</small></p>
EOD;
htmlタグを削除しないと、メーラーによっては、読み取りに問題が出るかも知れません。


* plugin.forget.tpl (6.16 KB - downloaded 159 times.)
Logged
yajima
Jr. Member
*
Posts: 26


« Reply #12 on: May 27, 2008, 02:10 AM »

なんだか、質問が微妙なんですが。

ThunderbirdでeFormからのメールを受信した時に、メール一覧ペイン、メールプレビューペイン、メッセージウィンドウの3つの場合で、メールプレビューの時だけメールの件名が文字化けしてしまいます。

メール一覧では問題なく読めているので、普段はあまり気にしないのですが。。
クライアントに納品するには、ここの部分は不具合だと思うので、なんとか解決したいと思っています。

メールのソースを見た時に、

Quote
Subject: =?ISO-2022-JP?B?PT9p***************************RPz0xQiRC?=
 =?ISO-2022-JP?B?IVo9MUIoQk1FR*************MnElYSE8JWshWjBlTHRJ?=
 =?ISO-2022-JP?B?SiFbP*******KEI/PQ==?=

といった風に、Subjectのところが複数行になっているので、これが原因なのかなと思っています。
しかしながら、解決する方法が。。
Logged
ZeRo
Sr. Member
****
Posts: 426



WWW
« Reply #13 on: May 27, 2008, 04:44 AM »

そのeFormはISO-2022-JP版でしょうか?

サブジェクトが長い場合は、74文字ぐらいで折り返して複数行になるんですが、phpMailerのロジックの部分で
それが悪さしているのか・・・それか、TBの問題か・・・ちょっと判別は付かないんですが、Subjectをもうちょい短くして上の3行が2行になった場合はどうなりますでしょうか?
« Last Edit: May 27, 2008, 08:44 AM by ZeRo » Logged

yajima
Jr. Member
*
Posts: 26


« Reply #14 on: May 28, 2008, 09:56 PM »

ISO-2022-JP版を使っています。

74文字くらいで折り返し。
2バイト文字で、37文字くらいで折り返すという事ですよね。

例えば「その他のお問い合わせ」という10文字の件名でもメールソースのSubjectでは、2行に渡って送信されています。

あと気がついたのですが、eFormから送ったメールのSubjectの1行目がいずれも同じ文字列になっているんです。


Subject: =?ISO-2022-JP?B?PT9pc28tMjAyMi1qcD9RPz0xQiRC?=


設置したeFormでは、コンボボックスで件名を選んで、送信するようにしているのですが。
いずれの件名を選んでも上記のSubjectの1行目が入り、2行目から本当の件名が始まっている感じなんですね。
この1行目の文字列は、意味の無い文字列なんでしょうか。


* subjectmojibake.gif (43.97 KB, 600x460 - viewed 174 times.)
« Last Edit: May 28, 2008, 10:00 PM by yajima » 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 | SMF © 2006-2008, Simple Machines LLC

Valid XHTML 1.0! Valid CSS!