D7のコメント等のメール通知の改行位置について

Events happening in the community are now at Drupal community events on www.drupal.org.
sfinity's picture

Dropal7でコメント等のフォームに内容を入力し、
Rulesでメール通知を行っています。

そのメール本文にコメント内容を記載しているのですが、
コメント欄に入力した改行位置とメール本文の改行位置が
一致しないのですが、一致させる方法はありますでしょうか?

Comments

DefaultMailSystemのバグです

blauerberg's picture

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を実装する必要があります。

返信ありがとございます。

sfinity's picture

なるほどバグだったのですね。
原因も教えて頂き勉強になりました。

コアのバグなのでモジュールを他のメールモジュールに
変えてもダメという事ですよね?

教えていただいたリンク先を見るとD7用は
システムテストでFailedになってますが
当てても大丈夫なものでしょうか?

パッチを当てたことが無いのですが、Drupalで
パッチを当てる方法とかあったら教えてください。

対象のソースを開いて直接編集しても良いのでしょうが、
今後の為によろしくお願いします。

いろいろと相談してしまい申し訳ありませんが
よろしくお願いします。

blauerberg's picture

コアのバグなのでモジュールを他のメールモジュールに
変えてもダメという事ですよね?

いいえ、Drupalではメールのロジック部分はモジュール側で書き換えが可能[*1]です。
他のメールモジュールをインストールすれば、コアではなくそちらのメールのロジックが
使われますので、問題は回避出来ます。
ただ、このトピックの内容が修正されているメールモジュールがあるかどうかはわかりません。

簡単でメンテナンスも楽なのは、紹介したパッチを適用したMailSystemInterface を
実装したモジュールを作成する事ですね。
(コアにパッチを入れると、セキュリティ更新の際に手間がかかるので)

パッチの当て方についてはDrupal特有のやり方があるわけではないので、技術書やGoogleで方法を探してください。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: