我正在將我的舊Sitecore(< 8)代碼轉換爲Sitecore EXM。我很難從代碼中將用戶添加到收件人列表中。在這篇文章中的答案:Sitecore 8 EXM add a contact to list from listmanager沒有完全回答我的問題,因爲我不能評論,我決定開始一個新的話題。EXM訂閱列表C#
我的第一個問題是我的EcmFactory.GetDefaultFactory().Bl.RecipientCollectionRepository.GetEditableRecipientCollection(recipientListId)
在RecipientCollectionRepository
上給出了編譯錯誤,它說它不存在。所以我使用了稍微不同的代碼。現在我的代碼,如下所示:
var contactRepository = new ContactRepository();
var contactName = this.Email.Text;
var contact = contactRepository.LoadContactReadOnly(contactName);
contact = contactRepository.CreateContact(Sitecore.Data.ID.NewID);
contact.Identifiers.AuthenticationLevel = Sitecore.Analytics.Model.AuthenticationLevel.None;
contact.System.Classification = 0;
contact.ContactSaveMode = ContactSaveMode.AlwaysSave;
contact.Identifiers.Identifier = contactName;
contact.System.OverrideClassification = 0;
contact.System.Value = 0;
contact.System.VisitCount = 0;
var contactPreferences = contact.GetFacet<IContactPreferences>("Preferences");
contactPreferences.Language = "nl-NL";
var contactEmailAddresses = contact.GetFacet<IContactEmailAddresses>("Emails");
contactEmailAddresses.Entries.Create("test").SmtpAddress = this.Email.Text;
contactEmailAddresses.Preferred = "test";
var contactPersonalInfo = contact.GetFacet<IContactPersonalInfo>("Personal");
contactPersonalInfo.FirstName = contactName;
contactPersonalInfo.Surname = "recipient";
if (recipientList != null)
{
var xdbContact = new XdbContactId(contact.ContactId);
if (!recipientList.Contains(xdbContact, true).Value)
{
recipientList.AddRecipient(xdbContact);
}
contactRepository.SaveContact(contact, new ContactSaveOptions(true, null));
}
所以recipientList
被發現,並在第一時間我的聯繫人添加到它,它增加了「收件人」 1(使用/sitecore/system/List Manager/All Lists/E-mail Campaign Manager/Custom/RecipientList
選中)。
我也有一個消息,它有這個選擇加入收件人列表,但是當我檢查該消息時,它表示它將被髮送給0個訂戶。
對此有何看法?