Dec 04, 2008, 01:41 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  
Pages: [1] 2   Go Down
  Print  
Author Topic: [解決]Newsletter スニペットでの件名の文字化け  (Read 3263 times)
0 Members and 1 Guest are viewing this topic.
yamakatsu
Jr. Member
*
Posts: 12


« on: Dec 17, 2007, 05:31 AM »

ども、こんばんは。
いつも非常に参考にさせていただいております。

さて、件名にあるとおりスニペット“Newsletter”の文字化けの件です。
http://modxcms.com/Newsletter-574.html


設定後、送信されたメールの件名部分が文字化けしてしまいます。
スニペットの326行目にある“charset=iso-8859-1”を色々変更してみたりしたのですが、やはり駄目でした。

こちらが使っているのは、MODx Version(s): 0.9.6.1となります。
スニペット自体の対応バージョンは、「MODx Version(s): 0.9.2.1, 0.9.2, 0.9.1」とあります。

以上、宜しくお願い致します。
« Last Edit: Dec 20, 2007, 01:49 AM by yamakatsu » Logged
MEGU
Committed to MODx
*****
Posts: 817



WWW
« Reply #1 on: Dec 17, 2007, 09:42 AM »

こんにちは。

コミュニケーションツールとして便利そうなスニペットですね。
私も試してみました。が、サブジェクトも内容も文字化けしていました。
たぶん、動作自体は、096でも問題はないのでは...と思いますが。

しかし私では解決できません。。

前回のJotの通知が文字化けする件といい、MODxで、メール通知がうまくいっているのは、
もしかしてZeRoさんが、対応版を出して下さっているeFromだけなのでしょうか。。

今後のことを考えますと、メール通知の文字化けの件は、なんとかクリアできればと思います。。
解決策でお心当たりがある方、おられましたら、ぜひよろしくお願い致します。

もしかすると他でも通知メールが化ける件があるのかも知れませんね。
ちょっと調べてみます。私自身が普段使わない機能なので盲点だったかも。。
Logged
yamakatsu
Jr. Member
*
Posts: 12


« Reply #2 on: Dec 17, 2007, 08:00 PM »

MEGUさん、おはようございます。

対応ありがとうございます。
こーいうメール送信系は、ビジネス用途では結構需要があるので何とかなればと思ってます。

今回、客先の旧サイトがxoopsのイベント案内モジュールを入れてましてMODxに変更するにあたってイベント情報ページの更新をメールで送りたいとリクエストされてます。

xoops eguide
http://xoopscube.jp/modules/mydownloads/singlefile.php?cid=6&lid=330

できれば、ドキュメント作成時に自動で登録ユーザーにメール送信できるようになればと色々探したのですが最悪手動でメール送信するしかないのかなと思いこのスニペットをテストしております。
テンプレート変数で、ドキュメント個々にて設定できればいいんですが…。
Logged
tkfm
Committed to MODx
*****
Posts: 624


WWW
« Reply #3 on: Dec 17, 2007, 08:55 PM »

MODxでのメールの扱いは、やや微妙な感じですね~
多くのSnippet等はPHPの「mail()関数」を使っていて、日本語に限らずよく文字化けの報告が上がっていますね。
NewsletterスニペットもJotもこの関数でメール送信しているみたいです。

eFormについてはPHPMailerというクラス(manager/includes/controls/class.phpmailer.php)を使っていて、今後はこちらを使おうよ!みたいな発言もあるようです。が、方向性はまだ出てないような... ちなみに、MODx同梱のPHPMailerはかなり古いみたいですね。最新版はこちら

ZeRoさんのiso-2022-jp版では、PHPMailerを拡張して対応(modxmailer.inc.php)されているようです。

mail()関数で書かれている部分を、このZeRoさんの拡張したクラスを使って書き換えてやれば、比較的簡単に文字化けせずにメールを送れるようになるような気がしますが... あ~やっぱり私のスキルではここまで! Cry
« Last Edit: Dec 17, 2007, 08:57 PM by tkfm » Logged
Cassiopeia
Jr. Member
*
Posts: 11


« Reply #4 on: Dec 19, 2007, 01:02 AM »

2007/12/19 コード修正しました Cry
メール送信で文字化けする件について報告するスレ
http://modxcms.com/forums/index.php/topic,20954.0.html
のほうでちょっと書きましたが、動作確認してみました。
結果としては、私の環境では文字化けせずにメールが受信できました。

環境は以下
PHP 5.2.1
MODX  0.9.6.1
Newsletter 0.2b

やったことは
1. Newsletterの326行目の 'iso-8859-1' を 'iso-2022-jp' に変更

2. 379行目から394行を以下のコードに差し替え
Code:
// Send Out Email
mb_language('ja');     // 追加
mb_internal_encoding($modx->config['modx_charset']);   //追加
// -- Remove duplicate email ($toemail)
$toemail = array_flip($toemail);
$toemail = array_flip($toemail);
// -- Email $toemail ($toemail)
for($i = 0; $i < count($toemail); $i++) {
mb_send_mail($toemail[$i], $subject, $content, $headers);  //mb_send_mailに変更
}
// -- Remove duplicate email ($tousers)
$touemail = array_flip($touemail);
$touemail = array_flip($touemail);
// -- Email $touemail ($tousers)
for($i = 0; $i < count($touemail); $i++) {
mb_send_mail($touemail[$i], $subject, $content, $headers);  //mb_send_mailに変更  2007/12/19修正
}
// Return flag
return true;

3.  ドキュメントに [!Newsletter? &mode=`msg`!]  として対象ページでTo(WebUser Group)を選択、To:, Subject:, Document: に入力して"Send"!

受信しましたが、文字化けなし Smiley
一応お知らせしておきます。

« Last Edit: Dec 19, 2007, 08:33 AM by Cassiopeia » Logged
yamakatsu
Jr. Member
*
Posts: 12


« Reply #5 on: Dec 19, 2007, 03:27 AM »

Cassiopeiaさん、ありがとうございます。

こちらの環境ですが、
PHP 4.3.2
MODX  0.9.6.1
Newsletter 0.2b
となります。

コードの差し替え等行い送信してみましたが、
やはり“Your message had been sent!”とは出るのですが届かないですー Cry
Cassiopeiaさんとの違いはPHPのバージョンですが、これが原因なのでしょうか?。

うーむ…。
Logged
Cassiopeia
Jr. Member
*
Posts: 11


« Reply #6 on: Dec 19, 2007, 04:59 AM »

なぜでしょうね・・・・  Huh

172行と198行付近?にある
Code:
<input type="hidden" name="from" value="no-reply@domain.com" />
のvalueにご自身のメールアドレスを設定すれば、メールサーバでエラーがあれば、
何か帰ってくるかもしれません。
Logged
MEGU
Committed to MODx
*****
Posts: 817



WWW
« Reply #7 on: Dec 19, 2007, 07:02 AM »

直前の私の投稿、不明瞭だったので、削除しました。ごめんなさい。
もう少しテストします。
« Last Edit: Dec 19, 2007, 07:25 AM by MEGU » Logged
MEGU
Committed to MODx
*****
Posts: 817



WWW
« Reply #8 on: Dec 19, 2007, 07:44 AM »

こんにちは。
Cassiopeia さん。どうもありがとうございます。

私も、試してみました。
---*---*---*---*---*---
XREA+
PHP5.2.3
MODx0961

メール送信するかしないかのテスト
とりあえず、メール送信するかしないかのテストをしてみました。

test1
Code:
// Generate Headers
if(strtolower($type) == 'html') $contentType = 'text/html; charset=iso-2022-jp';

および
Code:
// Send Out Email
mb_language('ja');
mb_internal_encoding($modx->config['modx_charset']);
// -- Remove duplicate email ($toemail)
$toemail = array_flip($toemail);
$toemail = array_flip($toemail);
// -- Email $toemail ($toemail)
for($i = 0; $i < count($toemail); $i++) {
mb_send_mail($toemail[$i], $subject, $content, $headers);
}
// -- Remove duplicate email ($tousers)
$touemail = array_flip($touemail);
$touemail = array_flip($touemail);
// -- Email $touemail ($tousers)
for($i = 0; $i < count($touemail); $i++) {
mb_send_mail($toemail[$i], $subject, $content, $headers);
}
// Return flag
return true;
}

 メール送信しません。

test2.
Code:
// Generate Headers
if(strtolower($type) == 'html') $contentType = 'text/html; charset=iso-2022-jp';
及び
Code:
// Send Out Email
mb_language('ja');
mb_internal_encoding($modx->config['modx_charset']);
// -- Remove duplicate email ($toemail)
$toemail = array_flip($toemail);
$toemail = array_flip($toemail);
// -- Email $toemail ($toemail)
for($i = 0; $i < count($toemail); $i++) {
mail($toemail[$i], $subject, $content, $headers);
}
// -- Remove duplicate email ($tousers)
$touemail = array_flip($touemail);
$touemail = array_flip($touemail);
// -- Email $touemail ($tousers)
for($i = 0; $i < count($touemail); $i++) {
mail($touemail[$i], $subject, $content, $headers);
}
// Return flag
return true;
}

 メール送信します

test3
Code:
// Generate Headers
if(strtolower($type) == 'html') $contentType = 'text/html; charset=iso-2022-jp';
及び
Code:
// Send Out Email
mb_language('ja');
mb_internal_encoding($modx->config['modx_charset']);
// -- Remove duplicate email ($toemail)
$toemail = array_flip($toemail);
$toemail = array_flip($toemail);
// -- Email $toemail ($toemail)
for($i = 0; $i < count($toemail); $i++) {
mb_send_mail($toemail[$i], $subject, $content, $headers);
}
// -- Remove duplicate email ($tousers)
$touemail = array_flip($touemail);
$touemail = array_flip($touemail);
// -- Email $touemail ($tousers)
for($i = 0; $i < count($touemail); $i++) {
mb_send_mail($toemail[$i], $subject, $content, $headers);
}
// Return flag
return true;
}
及びフォームの「To:」に有効メールアドレスを入力

「To:」に入力したメールアドレスにのみメールが届きます(なぜか2通届くのはスニペットの仕様...?)

うちの環境では、なぜか「mail」を「mb_send_mail」にするとWEBユーザのメールアドレスに
メールが届かないようです...???
« Last Edit: Dec 19, 2007, 07:48 AM by MEGU » Logged
Cassiopeia
Jr. Member
*
Posts: 11


« Reply #9 on: Dec 19, 2007, 08:39 AM »

コードに誤りがありました、すみません Cry

2つ目のmb_send_mailのところ
Code:
mb_send_mail($toemail[$i], $subject, $content, $headers);
ではなくて
Code:
mb_send_mail($touemail[$i], $subject, $content, $headers);

$touemail
です。2通届くのはこれが原因です。
前のポストも修正しておきました。混乱させて申し訳ない。
Logged
MEGU
Committed to MODx
*****
Posts: 817



WWW
« Reply #10 on: Dec 19, 2007, 09:44 AM »

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

無事送信されました。文字化けもなしです。
どうもありがとうございます。^^。
« Last Edit: Dec 19, 2007, 10:51 AM by MEGU » Logged
yamakatsu
Jr. Member
*
Posts: 12


« Reply #11 on: Dec 19, 2007, 07:39 PM »

皆さん、おはようございます。

今朝、テストしてみました!バッチリです。感謝♪感謝♪。

で、いくつか気になったことが…。

受信したメールのですが、たとえばGmailで受信すると送信者が“Unknown Sender”と表示されます。
また、yahoo! Mailで受信すると迷惑メールフォルダに(笑)。
普段使っているメールクライアントはThunderbirdなのですが、Senderの部分も表示されません。

このSenderの部分ってのは、どう表示されてますか?。
Logged
MEGU
Committed to MODx
*****
Posts: 817



WWW
« Reply #12 on: Dec 19, 2007, 08:30 PM »

こんにちは。

とりあえず、メール送信成功して良かったですね。 Cheesy

Sender の部分は、&msgの場合、たぶん172行目付近の「no-reply@domain.com」が
使われているんじゃないかと思います。OEでは、送信者には「no-reply@domain.com」と
表示されています。ここのところをご自身のメールアドレスなどにしてみると
どうでしょうか...?
Logged
yamakatsu
Jr. Member
*
Posts: 12


« Reply #13 on: Dec 19, 2007, 08:40 PM »

MEGUさん、こんにちわ。

はい、「no-reply@domain.com」の部分は変更済みです。

例えば、Yahoo!では返信をクリックするとtoの部分にメールアドレスが入りますがGmailやThunderbirdでは空欄のままになります。
Logged
MEGU
Committed to MODx
*****
Posts: 817



WWW
« Reply #14 on: Dec 19, 2007, 09:15 PM »

こんにちは。

むむ。。?これ以上は私では無理な予感。。 Cry
送信者=返信用メールアドレスっていうのを明示しないとダメって事なのかな。。
たとえば、eFormの場合は、「返信用メールアドレス」が定義されていない場合は
送信者メールアドレスが返信用メールアドレスになるみたい?なんですけど、
そういうロジックが必要と言うことなのでしょうか。うーんん。わからないです...。
ごめんなさい。。

どなたかフォローお願いできれば嬉しいです~。
Logged
Pages: [1] 2   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!