sharepoint でグループを作成する際に、「メンバーシップ要求を次の電子メール アドレスに送信する」というオプションがあります。
メンバーシップ要求を SPGroup に送信するために使用されます。
しかし、どうすれば電子メール アドレスをプログラムで設定できますか
sharepoint でグループを作成する際に、「メンバーシップ要求を次の電子メール アドレスに送信する」というオプションがあります。
メンバーシップ要求を SPGroup に送信するために使用されます。
しかし、どうすれば電子メール アドレスをプログラムで設定できますか
SP 2013 を使用している場合は、PowerShell を使用して次のコードを使用できます。
$membersGroup = $siteCollection.SiteGroups["$groupName"]
$membersGroup.RequestToJoinLeaveEmailSetting = "someone@mail.com"
$membersGroup.Update()
機能がアクティブ化されたイベントで同じことを達成しようとしています。グループを作成する方法と、オブジェクト モデルでこれらの設定にアクセスする方法を見つけました。以下の私の例を使用できます。問題は、SPGroup.Update() を呼び出したにもかかわらず、SPGroup のこれらのブール型プロパティへの変更が適用されないことです。作成された SPGroup は引き続き既定の設定を使用します (メンバーシップ要求はオフになっています)。
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPSite site = (SPSite)properties.Feature.Parent;
{
using (SPWeb web = site.RootWeb)
{
SPGroupCollection collGroups = web.SiteGroups;
SPUser user = web.EnsureUser("DOMAIN\\username");
collGroups.Add("MySPGroupName", user, user, "MySPGroupDescription");
if (!web.AssociatedGroups.Contains(collGroups["MySPGroupName"]))
{
web.AssociatedGroups.Add(collGroups["MySPGroupName"]);
}
SPRoleAssignment assignment = new SPRoleAssignment(collGroups["MySPGroupName"]);
SPRoleDefinition def = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
assignment.RoleDefinitionBindings.Add(def);
web.RoleAssignments.Add(assignment);
web.Update();
collGroups["MySPGroupName"].AllowMembersEditMembership = true;
collGroups["MySPGroupName"].AllowRequestToJoinLeave = true;
collGroups["MySPGroupName"].OnlyAllowMembersViewMembership = false;
string emailForRequests = "username@domain.com";
if (!String.IsNullOrEmpty(user.Email))
emailForRequests = user.Email;
collGroups["MySPGroupName"].RequestToJoinLeaveEmailSetting = emailForRequests;
collGroups["MySPGroupName"].Update();
}
}
}