Fazendo os emails de boas-vindas funcionarem com um provedor de declarações personalizado no SharePoint 2010
Artigo original publicado na quinta-feira, 03 de maio de 2012
Um bom “amigo do blog”, Israel V., foi bom o suficiente para me indicar recentemente que quase todas as amostras de código que temos para provedores de declarações personalizadas contém uma pequena falha irritante – se você enviar estas amostras e os emails de boas-vindas que são enviados quando você adiciona uma nova pessoa a um site não são enviados. Eu, claro, sou o maior culpado de tudo isso, então verifiquei a situação com mais cuidado, assim como realizei uma pequena revisão sobre o código que Israel desenvolveu para resolver este problema.
Em resumo, você verá este problema ocorrer se adicionar um usuário a um conjunto de sites pela primeira vez e, portanto, não há um endereço de email associado àquela pessoa – porque a sincronização de perfil não ocorreu. Portanto, como você pode imaginar, o fundamental aqui (e eu estou resumindo para o cenário mais simples) é obter um endereço de email para o usuário no momento que ele é adicionado e conectá-lo na propriedade adequada em sua classe do PickerEntity. Agora, vamos falar sobre alguns particulares.
ONDE você obtém seu endereço de email vai depender totalmente no seu provedor de declarações. Se você está retirando seus dados do Active Directory, é possível consultar o AD para obtê-lo. Se você está usando o SAML e o endereço de email é a declaração de identidade, é possível simplesmente reutilizá-lo. Basicamente, “depende” do que você precisa para realizar a chamada.
QUANDO você o usa é quando o método FillResolve é chamado. Como você sabe, este método pode ser chamado após alguém adicionar uma entrada pelo People Picker ou quando digitarem um valor no controle de digitação e clicar no botão resolver. Como eu mostrei em várias das minhas amostras de código, durante este processo você irá criar uma instância da classe PickerEntity para que possa adicioná-lo à Lista<PickerEntity> passada no método.
COMO você o adiciona é apenas para configurar a propriedade na instância do PickerEntity como:
//necessidade de fazer com que os emails de boas-vindas funcionem:
pe.EntityData[PeopleEditorEntityDataKeys.Email] = "steve@stevepeschka.com";
Neste exemplo, “pe” é apenas a instância da classe do PickerEntity que eu criei e retorna para o meu método FillResolve.
É isso basicamente. O maior problema pode ser obter o valor do endereço de email. Quando você conseguir, é muito fácil adicioná-lo no PickerEntity para garantir que seus emails de boas-vindas funcionem. Eu tentei e verifique que a) os emails de boas vindas não estavam sendo enviados com meu provedor de declarações personalizadas original e b) eles COMEÇARAM a ser enviados após incorporar esta alteração. Obrigado novamente a Israel V. pelo aviso e a amostra de código deste problema.
Esta é uma publicação localizada. Encontre o artigo original em Getting Welcome Emails to Work with a Custom Claims Provider in SharePoint 2010