1

メールを受信するためのドキュメントライブラリを設定しています。届くメールには、1枚の画像といくつかの処理に使用するcsvファイルが含まれています。

オーバーライドemailrecievedは完全に機能しますが、もちろんオーバーライドすると、設定で構成されたとおりに受信メールを保存する優れたSharePoint機能が失われます。

基盤となる機能を引き続き機能させるために、イベントでMyBase.EmailRecievedを呼び出すことができることを理解していました。ただし、これは機能しておらず、受信した電子メールの記録は保持されていません。

今のところ、明示的に監査証跡を作成していますが、SharePointの既存の機能を利用したいので、より堅牢になると思います。

MyBase.EmailRecieved呼び出しで何が間違っていますか?または、これが機能しない場合は、代わりに何ができますか?

前もって感謝します。

4

1 に答える 1

1

独自のEmailReceivedイベントレシーバーを作成すると、デフォルトの機能が失われます。

あなたがしなければならないことは、このデフォルト機能を自分で実装することです。簡単な例を挙げましょう。次の例では、すべてのメールの添付ファイルがファイルの場合、それらをリストに保存し*.csvます。emailMessageでも同じことができ、リストに保存することもできます。ご覧のとおりFiles.Add、ドキュメントライブラリにファイルを追加するのと同じくらい簡単です。

public override void EmailReceived(SPList list, SPEmailMessage emailMessage, string receiverData)
{
    SPFolder folder = list.RootFolder;

    //save attachments to list
    foreach (SPEmailAttachment attachment in emailMessage.Attachments)
    {
        if (attachment.FileName.EndsWith(".csv"))
        {
            var attachmentFileName = attachment.FileName;
            folder.Files.Add(folder.Url + "/" + attachmentFileName, attachment.ContentStream, true);
        }
    }

    list.Update();
}
于 2013-03-06T08:56:16.927 に答える