Partager via


讓歡迎電子郵件在 SharePoint 2010 中能配合自訂宣告提供者運作

英文原文已於 2012 年 5 月 3 日星期四發佈

本部落格的「忠實好友」:Israel V. 最近指出,我為自訂宣告提供者主題所設計的程式碼範例,幾乎全部都含有一項煩人的小缺陷。那就是假如您照著這些範例做,那麼當網站中新增人員時,應該要寄出的歡迎電子郵件都沒有寄出。我呢,當然是該為此負點責任,所以我深入研究了一下情況,也簡單為大家說明一下我和 Israel 為解決這問題所撰寫的一些程式碼。

簡而言之,當您第一次要將某位使用者加入網站集合時,就會碰到這個問題。因為沒有發生某個設定檔同步或是什麼類似情況,所以沒有相關聯的電子郵件地址。因此您可以想見, 此處的關鍵就在於 (我是把問題縮小到最簡單的情況) 要在新增使用者的當下取得他的電子郵件地址,再傳到您 PickerEntity 類別的合適屬性中。現在就讓我們來詳細看一下幾個要點。

來源:您取得電子郵件地址的來源,將完全取決於您的自訂宣告提供者。假如您是要從 Active Directory 抽取資料,可以藉由查詢 AD 加以取得;而如果您使用的是 SAML,且電子郵件地址就就是身分識別宣告的話,您只要重覆使用它就行了。基本上,兩種情況會有所不同,因此您必須做個決定。

時機:使用它的時機,就是叫用 FillResolve 方法的時候。如您所知,此方法可在某人透過「人員選擇」新增項目後,或當某人在輸入控制項中輸入一個值,並按下解析按鈕時會呼叫。如同我在許多程式碼範例中所展示的,該程序期間您必須建立一個 PickerEntity 類別的執行個體,才能把它加到要傳入方法的清單 <PickerEntity> 中。

方法:加入的方法就是把 PickerEntity 執行個體的屬性設定成像這樣:

//needed to make welcome emails work:

pe.EntityData[PeopleEditorEntityDataKeys.Email] = "steve@stevepeschka.com";

在這個例子中,"pe" 代表的是我建立並傳回 FillResolve 方法的 PickerEntity 類別執行個體。

其實不過就是如此而已。關鍵只是要能取得電子郵件地址的值。一旦取得了之後,要加到 PickerEntity 以確保歡迎電子郵件能正確寄出,就相對容易了。我反覆測試多次,確定了兩件事,第一,用我原先的自訂宣告提供者,歡迎電子郵件不會寄出;第二,進行了以上修改之後,它們就開始寄送了。再次感謝 Israel V. 的提醒,以及他解決問題的程式碼。

這是翻譯後的部落格文章。英文原文請參閱 Getting Welcome Emails to Work with a Custom Claims Provider in SharePoint 2010