通知メール本文に取り消し線が入る現象について

こんにちは、SharePoint サポートの大関です。

SharePoint のバージョンを問わず、よくいただくお問い合わせの一つとして、通知メールがあります。

今日は、最近確認された通知メールの問題について取り上げたいと思います。

現在、本問題の修正に向けて鋭意取り組んでおりますが、今回の投稿を参考の上、現段階における現象の発生抑制にお役立ていただければ幸いです。

 

1. 発生現象

SharePoint 2010、SharePoint 2013 において、通知メール本文全体に取り消し線が入る現象が報告されています。

以下のようなイメージです。

本来であれば、以下のように表示されることが期待されます。

 

2. 発生条件

本現象は以下の条件を満たす場合に発生します。

 

・リスト (リスト アイテム) に対して、通知を設定している

・対象のリストにリッチ テキストまたは、拡張リッチ テキスト形式の複数行テキスト列が含まれる

・通知メール本文のデータが 255 バイトを超える

 

以下に、現象が発生する理由について詳細をご説明します。

 

通知メールの本文には、変更される前のデータのセクション (OldValue) と、変更後のデータのセクション (NewValue) が含まれており、通常 OldValue のセクションの本文にのみ取り消し線が引かれる動作となっています。

 

通知される本文のデータは、通知の処理が完了するまでの間、コンテンツ データベースの EventCache というテーブルの EventData カラムにバイナリとして保存されています。

これを確認しますと、 <DIV> タグを使用して、取り消し線付の OldValue と、取り消し線なしの NewValue をセクション分けしていることがわかります。

この <DIV> タグが、通知メール本文のデータ サイズが 255 バイトを超えると、正常に定義されなくなるために、本現象は発生します。

具体的には、 OldValue のセクションの終わりには </DIV> という形でセクションの終わりが定義されるべきなのですが、この </DIV> が、NewValue セクションの終わりに定義されているために、取り消し線のスタイルが定義された OldValue セクションのスタイルが NewValue セクションにまで適用されてしまい、本文全体に取り消し線が引かれるという状態になります。

3. 回避策

現時点で本現象を回避する方法は、以下の 2 パターンです。

 

1) 本文が 255 バイト以下になるようにする

2) 複数行テキストの形式を「書式なしテキスト」とする

 

1) については、運用方法によっては情報量を調整することは難しいと認識しております。

また、255 バイトとは単純に文字数や行数ではなく、フォントのスタイルや、改行といった書式に関するデータ (上述の <BR> や <P> など) も踏まえての数字であるため、ユーザーの方にとって明確な行数や、文字数といった条件を提示することが出来ない部分となります。

 

上記を踏まえますと、もっとも確実に現象を回避できる方法は 2) の書式なしテキストの利用となります。

リッチ テキスト形式には、画像や表、ハイパーリンクといった情報を含めることが出来たり、フォントの装飾が出来たりといった利点がありますが、これらを利用していないリストである場合には、複数行テキストの形式を書式なしテキストとすることをご検討いただけますと幸いです。

なお、既に運用中のリストにおいて、複数行テキスト列の形式を "書式なしテキスト" に変更いたしますと、投稿済みアイテムから画像、表、ハイパーリンクといった情報が欠落いたしますので、ご注意ください。

 

4. 今後の修正予定

現在弊社では、可能な限り迅速に本現象が修正できるよう、鋭意取り組んでおります。

状況にアップデートがあり次第、またブログでもご案内したいと思います。

※2015 年 2 月現在、SharePoint 2010、SharePoint 2013 いずれにおきましても本事象は修正されております。
詳細は下記投稿をご参照ください。

通知メール本文に取り消し線が入る現象が修正されました。