1

WSS 3.0 ソリューションのカスタム電子メール通知に取り組んでいます。IAlertNotifyHandler から継承するカスタム クラスを使用して電子メールを生成しています。これが即時アラートに対してどのように行われるかを示す素晴らしい例がここにあります。アラートとアラートをトリガーしたアイテムに関する情報を取得するために使用される SPAlertHandlerParams に関連するコードの一部を次に示します。

SPAlertHandlerParams ahp;

int id = ahp.eventData[0].itemId;  //gets the itemId of the item triggering the notification.  

SPListItem myItem = list.GetItembyId(id);

即時アラートの場合、必要なアイテムは常に eventData オブジェクトの [0] の位置にあるため、これはうまく機能します。ダイジェスト イベントの場合、ahp.eventData 内のすべての項目をループするだけでよいと考えました。これには2つの問題があります。

まず、通知を送信しているすべてのイベントが表示されます。次に、eventData[0].itemId がリストの有効な ID を指していません。3桁の数字ではなく、6~7桁の数字です。

ダイジェスト メールのアラート情報にアクセスする正しい方法を知っている人はいますか? この件について他にご不明な点がございましたら、お気軽にお問い合わせください。

ご協力いただきありがとうございます!

4

1 に答える 1

0

私のプロジェクトでは、アラート機能を模倣するカスタムタイマージョブを(Andrew Connellによる投稿を使用して)作成しました。それは一晩実行され、毎日のアラートで私のリストにサブスクライブしているすべてのユーザーにクエリを実行します。次に、すべての新しいタスクをカスタム電子メールメッセージにパッケージ化します。

システムからの毎日の通知を抑制するために、カスタムアラートをそのままにしておきました。1人だけに割り当てられたタスクに対してアラートが送信されないように、「True」を返すだけです。これを振り返ると、カスタムアラートでクエリコードを実行でき、別のタイマージョブは必要ないと思います。

于 2011-07-14T14:35:19.343 に答える