Posted by sfinity on February 21, 2013 at 12:32pm
Dropal7でコメント等のフォームに内容を入力し、
Rulesでメール通知を行っています。
そのメール本文にコメント内容を記載しているのですが、
コメント欄に入力した改行位置とメール本文の改行位置が
一致しないのですが、一致させる方法はありますでしょうか?
Dropal7でコメント等のフォームに内容を入力し、
Rulesでメール通知を行っています。
そのメール本文にコメント内容を記載しているのですが、
コメント欄に入力した改行位置とメール本文の改行位置が
一致しないのですが、一致させる方法はありますでしょうか?
Comments
DefaultMailSystemのバグです
http://drupal.org/node/1447236 にあるように、Drupal CoreのDefaultMailSystemのバグです。
RFC 3676に定義されている整形処理が2度動くようなコードになっており、space区切りでない言語(CJK等)では意図しない箇所で改行される場合があります。
具体的には、1行が78文字以上あり、かつ78文字目以降に半角スペースがある場合、
1. 半角スペースの位置で強制的に改行される <--- これはRFC通りでバグではない
2. 行の最後の半角スペースが削除される <--- これがバグ
という動作をします。
本来であれば、RFC 3676で定義されている"format=flowed; delsp=yes"がメールのヘッダに付いているため、1. で生データ的には改行されてもメーラー側で綺麗に(改行前の状態で)表示してくれるのですが、2. のバグがあるため、メーラー側で表示が復元できないのが問題です。
現状では上記リンクにあるパッチを当てるか、自前でMailsystemを実装する必要があります。
返信ありがとございます。
なるほどバグだったのですね。
原因も教えて頂き勉強になりました。
コアのバグなのでモジュールを他のメールモジュールに
変えてもダメという事ですよね?
教えていただいたリンク先を見るとD7用は
システムテストでFailedになってますが
当てても大丈夫なものでしょうか?
パッチを当てたことが無いのですが、Drupalで
パッチを当てる方法とかあったら教えてください。
対象のソースを開いて直接編集しても良いのでしょうが、
今後の為によろしくお願いします。
いろいろと相談してしまい申し訳ありませんが
よろしくお願いします。
コアのバグなのでモジュールを他のメールモジュールに
いいえ、Drupalではメールのロジック部分はモジュール側で書き換えが可能[*1]です。
他のメールモジュールをインストールすれば、コアではなくそちらのメールのロジックが
使われますので、問題は回避出来ます。
ただ、このトピックの内容が修正されているメールモジュールがあるかどうかはわかりません。
簡単でメンテナンスも楽なのは、紹介したパッチを適用したMailSystemInterface を
実装したモジュールを作成する事ですね。
(コアにパッチを入れると、セキュリティ更新の際に手間がかかるので)
パッチの当て方についてはDrupal特有のやり方があるわけではないので、技術書やGoogleで方法を探してください。