We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19033
    • 892 Posts
    みなさまこんにちは。

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

    http://modxcms.com/forums/index.php/topic,20865.msg128950.html#msg128950" target="_blank" rel="nofollow">Jotのメール通知が文字化けする...未決 解決策あり...解決策はこちらに記載しました

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

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

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

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

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

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

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

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

    それと、現在わかっているメール送信に関する不具合(特に文字化け関係)がありましたら、
    こちらに報告して頂けるとうれしいです。あわせてよろしくお願い致します。
      • 33488
      • 429 Posts
      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関数ではなかったでしたっけ?? 管理画面のも?? 
      使ってない部分にかなり疎かったりしますが・・・。 :’(
        • 19033
        • 892 Posts
        ZeRoさん。どうもありがとうございます。

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


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

        eFormは、オリジナルからそのような処理がしてあるということなんですね。。
        すみません。確認なのですが。。
        これは、マルチバイト言語圏ということでなく、日本語圏に限られる問題?なのでしょうか。。
          • 33488
          • 429 Posts
          MODxMailerは一応ほかの言語も意識はしているんですけど、日本みたいに変わったコードの使い分けをしてない場合は実際にはphpmailerにスルーです。
          一応英語でもそのまま動くようにはなっています。

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

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

          0.9.7でMODxmailerクラスを利用するようにスニペットさんも置き換われば、手直しはこのMODxmailerだけになるんですけどね。
            • 4708
            • 11 Posts
            こんにちは。
            ZoRoさんもおっしゃっていますが、mail関数そのまま使うと日本語を含むメールは文字化けしてしまいますね。
            スニペット内でmail関数つかっているものだと、個別に対応しないといけなくなってしまいますし・・・

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

            mb_language('ja');
            mb_internal_encoding("UTF-8");
            $enc_header = "From: ". mb_encode_mimeheader("問い合わせメール","JIS", "B")." <[email protected]>";
            //ヘッダーに追加するものがあれば $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
            mb_language('ja');
            mb_internal_encoding("UTF-8");
            mb_send_mail($toemail[$i], $subject, $content, $headers);


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

            #コードに余計なものが含まれていたので修正
              • 33018
              • 12 Posts
              みんさん、こんにちわー。

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

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

                • 36592
                • 970 Posts
                こんにちは~
                Quote from: ZeRo at Dec 18, 2007, 03:14 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)への対応要望を上げていくと良いのでは?
                  • 19033
                  • 892 Posts
                  みなさま。ありがとうございます。

                  >tkfmさん。情報ありがとうございます。
                  そうですね。。0962時点で、ZeRoさんがおっしゃっているMODxmailerが
                  実装される気配ありですね。早い時期に各スニペットの作者さんが、切り替えに
                  踏み切って下さると嬉しいですね。。
                    • 19033
                    • 892 Posts
                    参考スレッド:
                    標準スニペットのContactFormから送ったメールが文字化けしてしまいます。
                    (これは日本語フォーラムができる前のスレでしょうか...)
                    WebSignupでのユーザー登録 で送信されるメールが化けている...解決策あり?要確認
                      • 19033
                      • 892 Posts
                      Jotのメール送信で文字化けする件解決しました laugh >...ちょっとウソです。サブスクリプションが上手くできていません。

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

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

                      	// 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 での修正を参考にさせて頂きました。
                      愚かなことをしておりましたら、どうぞご指摘下さい。。

                      ---*---*---*---*---*---
                      サブスクリプションの方がうまくいってません。。なぜでしょう...??