0

SharePoint 2010に、アイテムがリストに追加されたときに起動するイベントレシーバーを備えたWebパーツがあります。イベントレシーバーはメールを送信することになっていますが、送信しません。

イベントレシーバーなしで試してみると正常に動作しますが、イベントレシーバーを使用してメールを送信するにはどうすればよいですか?

StringDictionary headers = new StringDictionary();
string body = "Hi!";
headers.Add("to", "paulo@paulo.se");
headers.Add("from", "paulosaysno@paulo.se");
headers.Add("subject", "Paulo says hi");
headers.Add("content-type", "text/html");
SPUtility.SendEmail(web, headers, body)

助けてくれてありがとう。

4

1 に答える 1

1

また、イベントレシーバーはHTTPリクエストのコンテキストで実行されます。SPUtility.SendEmailにこれに関する問題があることが知られています。一般的な方法は、電子メールの送信中にHttpContext.Currentをnullに設定することです。

SPWeb thisWeb = thisSite.RootWeb;
string toField = "someone@microsoft.com";
string subject = "Test Message";
string body = "Message sent from SharePoint";
HttpContext oldContext = HttpContext.Current;
HttpContext.Current = null;

bool success = SPUtility.SendEmail(thisWeb, true, true, toField, subject, body);
HttpContext.Current = oldContext;

参照(コメントまでスクロールダウン):http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.sendemail (v = office.12).aspx

于 2012-04-20T08:37:05.280 に答える