Ordnungsgemäße Begrüßungs-E-Mails bei Verwenden eines benutzerdefinierten Anspruchsanbieters in SharePoint 2010

Veröffentlichung des Originalartikels: 03.05.2012

Israel V., ein guter „Freund des Blogs“, war vor Kurzem so nett, mich darauf hinzuweisen, dass nahezu alle unsere Codebeispiele für benutzerdefinierte Anspruchsanbieter einen irritierenden kleinen Fehler aufweisen. Wenn Sie diesen Beispielen folgen, werden die Begrüßungs-E-Mails, die gesendet werden, wenn Sie einer Website eine neue Person hinzufügen, nicht gesendet. Ich bin natürlich wie jeder andere auch schuld daran. Deshalb habe ich mir die Situation etwas näher angeschaut und auch gleich den Code geprüft, den Israel zum Umgehen dieses Problems entwickelt hat.

Dieses Problem tritt im Allgemeinen auf, wenn Sie einen Benutzer einer Websitesammlung erstmals hinzufügen und dieser Person keine E-Mail-Adresse zugeordnet ist, da beispielsweise noch keine Profilsynchronisierung erfolgt ist. Die einfachste Lösung ist (im einfachsten Fall) hier das Abrufen einer E-Mail-Adresse für die Benutzer zum Zeitpunkt ihres Hinzufügens und das anschließende Verbinden mit der entsprechenden Eigenschaft in der PickerEntity-Klasse. Lassen Sie uns nun ins Detail gehen.

WOHER bekommen Sie die E-Mail-Adresse? Das hängt ausschließlich von Ihrem Anspruchsanbieter ab. Wenn Sie die Daten aus Active Directory beziehen, können Sie Active Directory entsprechend abfragen. Wenn Sie mit SAML arbeiten und die E-Mail-Adresse der Identitätsanspruch ist, können Sie diesen einfach wiederverwenden. Im Grund „hängt es davon ab“, weshalb der Aufruf hier erfolgen muss.

WANN sollen die Informationen verwendet werden? Wenn die FillResolve-Methode aufgerufen wird. Wie Sie wissen, kann diese Methode entweder hinzugefügt werden, nachdem jemand einen Eintrag über die Personenauswahl hinzugefügt hat oder ein Wert in das Eingabefeld eingegeben wird und die Schaltfläche zum Auflösen geklickt wird. Wie ich in vielen meiner Codebeispiele gezeigt habe, erstellen Sie eine Instanz der PickerEntity-Klasse, weshalb Sie sie der Liste <PickerEntity> hinzufügen können, die an die Methode übergeben wird.

WIE wird die E-Mail-Adresse hinzugefügt? Durch Festlegen der PickerEntity-Instanz wie in diesem Beispiel:

//Wird benötigt, damit Begrüßungs-E-Mails funktionieren:

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

In diesem Beispiel ist pe die Instanz der PickerEntity-Klasse, die ich erstellt habe und an meine FillResolve-Methode zurückgebe.

Mehr ist weiter nicht zu tun. Der größte Trick kann aber auch sein, nur den Wert der E-Mail-Adresse abzurufen. Nachdem dies geschafft ist, ist es relativ einfach, diesen der PickerEntity-Klasse hinzuzufügen, um sicherzustellen, dass Ihre Begrüßungs-E-Mails funktionieren. Ich habe getestet, dass a) die Begrüßungs-E-Mails mit meinem ursprünglichen benutzerdefinierten Anspruchsanbieter nicht gesendet wurden und b) sie nach Durchführung dieser Änderung auf jeden Fall gesendet wurden. Danke nochmals an Israel V. für den Hinweis und das Codebeispiel zu diesem Problem.

Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter Getting Welcome Emails to Work with a Custom Claims Provider in SharePoint 2010