public static RecipientAddress ResolveAnrStringToOneOffEmail(string name, AnrManager.Options options) { if (name == null) { throw new ArgumentNullException("name"); } RecipientAddress recipientAddress = null; Participant participant; if (AnrManager.TryParseParticipant(name, options, out participant) && (!options.OnlyAllowDefaultRoutingType || options.IsDefaultRoutingType(participant.RoutingType))) { recipientAddress = new RecipientAddress(); recipientAddress.DisplayName = participant.DisplayName; recipientAddress.AddressOrigin = RecipientAddress.ToAddressOrigin(participant); recipientAddress.RoutingAddress = (AnrManager.IsMobileNumberInput(participant, options) ? participant.DisplayName : participant.EmailAddress); recipientAddress.RoutingType = participant.RoutingType; recipientAddress.SmtpAddress = ((participant.RoutingType == "SMTP") ? participant.EmailAddress : null); recipientAddress.MobilePhoneNumber = ((participant.RoutingType == "MOBILE") ? participant.EmailAddress : null); StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null) { recipientAddress.StoreObjectId = storeParticipantOrigin.OriginItemId; recipientAddress.EmailAddressIndex = storeParticipantOrigin.EmailAddressIndex; } } return(recipientAddress); }
// Token: 0x0600036F RID: 879 RVA: 0x00013FA4 File Offset: 0x000121A4 private void ExpandPDL(RecipientAddress address, List <ResolvedRecipient> recipients) { Participant[] array; try { array = DistributionList.ExpandDeep(this.mailboxSession, address.StoreObjectId); } catch (ObjectNotFoundException) { return; } foreach (Participant participant in array) { StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null) { StoreObjectId originItemId = storeParticipantOrigin.OriginItemId; RecipientAddress recipientAddress; try { recipientAddress = this.ConstructStoreRecipientAddress(participant, participant.DisplayName, originItemId); } catch (ObjectNotFoundException) { goto IL_FF; } if (recipientAddress != null) { recipients.Add(new ResolvedRecipient(recipientAddress)); } } else { RecipientAddress recipientAddress2 = new RecipientAddress(); recipientAddress2.RoutingType = participant.RoutingType; recipientAddress2.SmtpAddress = (participant.TryGetProperty(ParticipantSchema.SmtpAddress) as string); recipientAddress2.DisplayName = participant.DisplayName; recipientAddress2.RoutingAddress = participant.EmailAddress; if (!string.IsNullOrEmpty(recipientAddress2.RoutingType) && participant.RoutingType == "EX") { recipientAddress2.AddressOrigin = AddressOrigin.Directory; } else { recipientAddress2.AddressOrigin = AddressOrigin.OneOff; } if (recipientAddress2.SmtpAddress != null) { recipients.Add(new ResolvedRecipient(recipientAddress2)); } } IL_FF :; } }
private void RenderSmtpParticipant(TextWriter writer, Participant participant) { StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null) { StoreObjectId originItemId = storeParticipantOrigin.OriginItemId; this.RenderMemberWithIcon(writer, participant.DisplayName, originItemId.ToBase64String(), ListViewContents.ReadItemType.Contact, ThemeFileId.Contact, false); return; } writer.Write("<td class=\"txvl pdlncn\">"); base.RenderEmail(writer, participant.DisplayName, participant.EmailAddress, participant.RoutingType, null, EmailAddressIndex.None); writer.Write("</td>"); }
private void RenderPDLParticipant(TextWriter writer, Participant participant) { StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null) { StoreObjectId originItemId = storeParticipantOrigin.OriginItemId; this.RenderMemberWithIcon(writer, participant.DisplayName, originItemId.ToBase64String(), ListViewContents.ReadItemType.ContactDistributionList, ThemeFileId.DistributionListOther, true); return; } writer.Write("<td class=\"txvl pdlncn\"><img src=\""); base.UserContext.RenderThemeFileUrl(writer, ThemeFileId.DistributionListOther); writer.Write("\"><b>"); Utilities.HtmlEncode(participant.DisplayName, writer); writer.Write("</b></td>"); }
private static Persona CreatePersonaFromDistributionListMember(MailboxSession session, DistributionListMember member, out bool isADMember) { isADMember = false; Participant participant = member.Participant; Persona persona = new Persona(); persona.DisplayName = participant.DisplayName; persona.ImAddress = participant.GetValueOrDefault <string>(ParticipantSchema.SipUri, null); persona.EmailAddress = new EmailAddressWrapper(); persona.EmailAddress.RoutingType = participant.RoutingType; persona.EmailAddress.EmailAddress = participant.EmailAddress; persona.EmailAddress.Name = participant.DisplayName; StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; bool flag = member.MainEntryId is ADParticipantEntryId; PersonType personType = PersonType.Unknown; if (storeParticipantOrigin != null) { personType = ((string.CompareOrdinal(participant.RoutingType, "MAPIPDL") == 0) ? PersonType.DistributionList : PersonType.Person); if (session != null) { persona.EmailAddress.ItemId = IdConverter.GetItemIdFromStoreId(storeParticipantOrigin.OriginItemId, new MailboxId(session)); } persona.EmailAddress.EmailAddressIndex = storeParticipantOrigin.EmailAddressIndex.ToString(); if (personType == PersonType.DistributionList) { persona.EmailAddress.MailboxType = MailboxHelper.MailboxTypeType.PrivateDL.ToString(); } else if (personType == PersonType.Person) { persona.EmailAddress.MailboxType = MailboxHelper.MailboxTypeType.Contact.ToString(); } } else if (flag) { isADMember = true; } else { persona.EmailAddress.MailboxType = MailboxHelper.MailboxTypeType.OneOff.ToString(); } persona.PersonaType = PersonaTypeConverter.ToString(personType); return(persona); }
// Token: 0x060000BF RID: 191 RVA: 0x00006CF0 File Offset: 0x00004EF0 protected override void RenderContents(TextWriter writer, RecipientWellType type, RecipientWellNode.RenderFlags flags) { if (!this.HasRecipients(type)) { return; } AdRecipientBatchQuery adRecipientBatchQuery = new AdRecipientBatchQuery(this.GetRecipientCollection(type), this.UserContext); IEnumerator <Participant> recipientCollection = this.GetRecipientCollection(type); RecipientWellNode.RenderFlags renderFlags = flags & ~RecipientWellNode.RenderFlags.RenderCommas; bool flag = true; RecipientItemType recipientItemType = ItemRecipientWell.GetRecipientItemType(type); bool isWebPartRequest = OwaContext.Current.UserContext.IsWebPartRequest; int num = 0; while (recipientCollection.MoveNext()) { Participant participant = recipientCollection.Current; int recipientFlags = 0; ADObjectId adObjectId = null; int readItemType = 1; string smtpAddressAndADObjectInfo = ItemRecipientWell.GetSmtpAddressAndADObjectInfo(participant, adRecipientBatchQuery, out adObjectId, out recipientFlags, out readItemType); StoreObjectId storeObjectId = null; StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null) { storeObjectId = storeParticipantOrigin.OriginItemId; } string idString = ItemRecipientWell.BuildRecipientIdString(recipientItemType, num++); if (RecipientWellNode.Render(this.UserContext, writer, participant.DisplayName, smtpAddressAndADObjectInfo, participant.EmailAddress, participant.RoutingType, RecipientAddress.ToAddressOrigin(participant), recipientFlags, readItemType, recipientItemType, adObjectId, storeObjectId, renderFlags, idString, isWebPartRequest) && flag) { flag = false; if ((flags & RecipientWellNode.RenderFlags.RenderCommas) != RecipientWellNode.RenderFlags.None) { renderFlags |= RecipientWellNode.RenderFlags.RenderCommas; } } } }
// Token: 0x06002AD1 RID: 10961 RVA: 0x000F0DC8 File Offset: 0x000EEFC8 protected void RenderMemberList() { foreach (DistributionListMember distributionListMember in this.distributionList) { if (!(distributionListMember.Participant == null)) { Participant participant = distributionListMember.Participant; base.Response.Write("<tr><td class='adDlMmbrsLft'>"); string itemType = null; string itemId = null; string emailAddress = participant.EmailAddress; string smtpAddress = Utilities.GetParticipantProperty <string>(participant, ParticipantSchema.SmtpAddress, null); AddressOrigin addressOrigin = AddressOrigin.Unknown; StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; bool flag = distributionListMember.MainEntryId is ADParticipantEntryId; if (storeParticipantOrigin != null) { if (string.CompareOrdinal(participant.RoutingType, "MAPIPDL") == 0) { base.UserContext.RenderThemeImage(base.Response.Output, ThemeFileId.DistributionListOther); itemType = "IPM.DistList"; } else { base.UserContext.RenderThemeImage(base.Response.Output, ThemeFileId.Contact); itemType = "IPM.Contact"; } itemId = storeParticipantOrigin.OriginItemId.ToBase64String(); addressOrigin = AddressOrigin.Store; } else if (flag) { bool participantProperty = Utilities.GetParticipantProperty <bool>(participant, ParticipantSchema.IsDistributionList, false); if (participantProperty) { base.UserContext.RenderThemeImage(base.Response.Output, ThemeFileId.DistributionListOther); itemType = "ADDistList"; } else { base.UserContext.RenderThemeImage(base.Response.Output, ThemeFileId.DistributionListUser); itemType = "AD.RecipientType.User"; } addressOrigin = AddressOrigin.Directory; } else { base.UserContext.RenderThemeImage(base.Response.Output, ThemeFileId.DistributionListUser); } if (string.CompareOrdinal(participant.RoutingType, "EX") == 0) { ADRawEntry adrawEntry = this.FindRecipientInAD(participant.EmailAddress); if (adrawEntry != null) { smtpAddress = ((SmtpAddress)adrawEntry[ADRecipientSchema.PrimarySmtpAddress]).ToString(); if (flag) { itemId = Utilities.GetBase64StringFromADObjectId((ADObjectId)adrawEntry[ADObjectSchema.Id]); } } } base.Response.Write("</td><td class=\"pdlNm adDlMmbrsRt\">"); if (!string.IsNullOrEmpty(participant.DisplayName)) { this.RenderMemberNameLink(itemType, itemId, participant.DisplayName); } base.Response.Write("</td><td class=adDlMmbrsRt>"); if (!string.IsNullOrEmpty(emailAddress)) { this.RenderMemberEmailLink(emailAddress, participant.DisplayName, smtpAddress, participant.RoutingType, addressOrigin, (storeParticipantOrigin != null) ? storeParticipantOrigin.OriginItemId : null, (storeParticipantOrigin != null) ? storeParticipantOrigin.EmailAddressIndex : EmailAddressIndex.None); } base.Response.Write("</td></tr>"); } } }
public void ExpandDistributionList() { ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "RecipientWellEventHandler.ExpandDistributionList"); RecipientInfo[] array = (RecipientInfo[])base.GetParameter("Recips"); List <Participant> list = new List <Participant>(); foreach (RecipientInfo recipientInfo in array) { if (recipientInfo.StoreObjectId == null || !Utilities.IsMapiPDL(recipientInfo.RoutingType)) { throw new OwaEventHandlerException("The requested recipient is not personal distribution list"); } list.AddRange(DistributionList.ExpandDeep(base.UserContext.MailboxSession, recipientInfo.StoreObjectId)); } using (List <Participant> .Enumerator enumerator = list.GetEnumerator()) { AdRecipientBatchQuery adRecipientBatchQuery = new AdRecipientBatchQuery(enumerator, base.UserContext); bool flag = false; foreach (Participant participant in list) { string smtpAddress = null; string sipUri = null; ADObjectId adObjectId = null; StoreObjectId storeObjectId = null; EmailAddressIndex emailAddressIndex = EmailAddressIndex.None; string mobilePhoneNumber = null; if (participant.RoutingType == "EX") { ADRecipient adRecipient = adRecipientBatchQuery.GetAdRecipient(participant.EmailAddress); if (adRecipient != null) { smtpAddress = adRecipient.PrimarySmtpAddress.ToString(); adObjectId = adRecipient.Id; sipUri = InstantMessageUtilities.GetSipUri((ProxyAddressCollection)adRecipient[ADRecipientSchema.EmailAddresses]); mobilePhoneNumber = Utilities.NormalizePhoneNumber((string)adRecipient[ADOrgPersonSchema.MobilePhone]); } } else { smtpAddress = participant.EmailAddress; sipUri = participant.EmailAddress; } RecipientAddress.RecipientAddressFlags recipientAddressFlags = RecipientAddress.RecipientAddressFlags.None; if (participant.GetValueOrDefault <bool>(ParticipantSchema.IsDistributionList)) { recipientAddressFlags |= RecipientAddress.RecipientAddressFlags.DistributionList; } else if (participant.GetValueOrDefault <bool>(ParticipantSchema.IsRoom)) { recipientAddressFlags |= RecipientAddress.RecipientAddressFlags.Room; } StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null) { storeObjectId = storeParticipantOrigin.OriginItemId; emailAddressIndex = storeParticipantOrigin.EmailAddressIndex; } RecipientWellNode.Render(this.Writer, base.UserContext, participant.DisplayName, smtpAddress, participant.EmailAddress, participant.RoutingType, participant.GetValueOrDefault <string>(ParticipantSchema.Alias), RecipientAddress.ToAddressOrigin(participant), (int)recipientAddressFlags, storeObjectId, emailAddressIndex, adObjectId, flag ? RecipientWellNode.RenderFlags.RenderCommas : RecipientWellNode.RenderFlags.None, sipUri, mobilePhoneNumber); flag = true; } } }
internal override void RenderContents(TextWriter writer, UserContext userContext, RecipientWellType type, RecipientWellNode.RenderFlags flags, RenderRecipientWellNode wellNode) { if (writer == null) { throw new ArgumentNullException("writer"); } if (userContext == null) { throw new ArgumentNullException("userContext"); } if (!this.HasRecipients(type)) { return; } IEnumerator <Participant> recipientsCollection = this.GetRecipientsCollection(type); RecipientWellNode.RenderFlags renderFlags = flags & ~RecipientWellNode.RenderFlags.RenderCommas; bool flag = true; bool flag2 = userContext.IsInstantMessageEnabled(); Result <ADRawEntry>[] array = null; int num = 0; while (recipientsCollection.MoveNext()) { Participant participant = recipientsCollection.Current; string smtpAddress = null; string alias = null; string text = null; int num2 = 0; ADObjectId adObjectId = null; string mobilePhoneNumber = null; if (participant.RoutingType == "EX" && !string.IsNullOrEmpty(participant.EmailAddress)) { bool flag3 = (flags & RecipientWellNode.RenderFlags.ReadOnly) != RecipientWellNode.RenderFlags.None; if (flag3) { alias = Utilities.GetParticipantProperty <string>(participant, ParticipantSchema.Alias, null); } bool participantProperty = Utilities.GetParticipantProperty <bool>(participant, ParticipantSchema.IsDistributionList, false); if (participantProperty) { num2 |= 1; } bool participantProperty2 = Utilities.GetParticipantProperty <bool>(participant, ParticipantSchema.IsRoom, false); if (participantProperty2) { num2 |= 2; } smtpAddress = Utilities.GetParticipantProperty <string>(participant, ParticipantSchema.SmtpAddress, null); if (flag2 && !participantProperty && !participantProperty2) { text = Utilities.GetParticipantProperty <string>(participant, ParticipantSchema.SipUri, null); if (text == null || text.Trim().Length == 0) { if (array == null) { array = AdRecipientBatchQuery.FindAdResultsByLegacyExchangeDNs(this.GetRecipientsCollection(type), userContext); } ADRawEntry data = array[num].Data; if (data != null) { adObjectId = (ADObjectId)data[ADObjectSchema.Id]; text = InstantMessageUtilities.GetSipUri((ProxyAddressCollection)data[ADRecipientSchema.EmailAddresses]); if (text != null && text.Trim().Length == 0) { text = null; } } } } if (userContext.IsSmsEnabled) { if (array == null) { array = AdRecipientBatchQuery.FindAdResultsByLegacyExchangeDNs(this.GetRecipientsCollection(type), userContext); } ADRawEntry data2 = array[num].Data; if (data2 != null) { mobilePhoneNumber = (string)data2[ADOrgPersonSchema.MobilePhone]; } } num++; } else if (participant.RoutingType == "SMTP") { smtpAddress = participant.EmailAddress; if (flag2) { text = participant.EmailAddress; } } else if (string.CompareOrdinal(participant.RoutingType, "MAPIPDL") == 0) { num2 |= 1; } StoreObjectId storeObjectId = null; EmailAddressIndex emailAddressIndex = EmailAddressIndex.None; StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null && storeParticipantOrigin.OriginItemId != null) { storeObjectId = storeParticipantOrigin.OriginItemId; emailAddressIndex = storeParticipantOrigin.EmailAddressIndex; } if (wellNode(writer, userContext, participant.DisplayName, smtpAddress, participant.EmailAddress, participant.RoutingType, alias, RecipientAddress.ToAddressOrigin(participant), num2, storeObjectId, emailAddressIndex, adObjectId, renderFlags, text, mobilePhoneNumber) && flag) { flag = false; if ((flags & RecipientWellNode.RenderFlags.RenderCommas) != RecipientWellNode.RenderFlags.None) { renderFlags |= RecipientWellNode.RenderFlags.RenderCommas; } } } }
// Token: 0x060000C0 RID: 192 RVA: 0x00006DF0 File Offset: 0x00004FF0 protected override bool RenderAnrContents(TextWriter writer, UserContext userContext, RecipientWellType type, bool isTableStartRendered) { bool flag = isTableStartRendered; bool flag2 = false; if (this.HasRecipients(type)) { AdRecipientBatchQuery adRecipientBatchQuery = new AdRecipientBatchQuery(this.GetRecipientCollection(type), this.UserContext); IEnumerator <Participant> recipientCollection = this.GetRecipientCollection(type); string empty = string.Empty; int num = 0; List <RecipientAddress> list = new List <RecipientAddress>(); RecipientItemType recipientItemType = ItemRecipientWell.GetRecipientItemType(type); int num2 = 0; while (recipientCollection.MoveNext()) { Participant participant = recipientCollection.Current; string text = ItemRecipientWell.BuildRecipientIdString(recipientItemType, num2++); if (string.CompareOrdinal(participant.RoutingType, "MAPIPDL") != 0 && (string.IsNullOrEmpty(participant.EmailAddress) || string.IsNullOrEmpty(participant.RoutingType)) && !string.IsNullOrEmpty(participant.DisplayName)) { num = 0; ADObjectId adobjectId = null; int num3; ItemRecipientWell.GetSmtpAddressAndADObjectInfo(participant, adRecipientBatchQuery, out adobjectId, out num, out num3); StoreParticipantOrigin storeParticipantOrigin = participant.Origin as StoreParticipantOrigin; if (storeParticipantOrigin != null) { StoreObjectId originItemId = storeParticipantOrigin.OriginItemId; } if (!flag) { writer.Write("<table cellspacing=0 cellpadding=0 class=\"anrot\" id=\"tblANR\"><tr><td class=\"msg\"><h1 tabindex=0>"); writer.Write(LocalizedStrings.GetHtmlEncoded(147143837)); writer.Write("</h1></td></tr><tr><td class=\"h100\"><table cellspacing=0 cellpadding=0 class=\"anrit\">"); flag = true; } if (!flag2) { string value = null; if (this is CalendarItemRecipientWell) { switch (type) { case RecipientWellType.To: value = LocalizedStrings.GetHtmlEncoded(609567352); break; case RecipientWellType.Cc: value = LocalizedStrings.GetHtmlEncoded(633037671); break; case RecipientWellType.Bcc: value = LocalizedStrings.GetHtmlEncoded(-1107183092); break; } } else { switch (type) { case RecipientWellType.To: value = LocalizedStrings.GetHtmlEncoded(-1105875540); break; case RecipientWellType.Cc: value = LocalizedStrings.GetHtmlEncoded(701860997); break; case RecipientWellType.Bcc: value = LocalizedStrings.GetHtmlEncoded(1482538735); break; } } writer.Write("<tr><td class=\"hdr\" tabindex=0>"); writer.Write(value); writer.Write("</td></tr>"); flag2 = true; } writer.Write("<tr><td class=\"rcpt\" nowrap><span tabindex=0>"); Utilities.CropAndRenderText(writer, participant.DisplayName, 24); writer.Write("</span> [<a href=\"#\" title=\""); writer.Write(Utilities.HtmlEncode(participant.DisplayName)); writer.Write("\" onClick=\"return onClkRmRcp('{0}')\">{1}</a>]", text, LocalizedStrings.GetHtmlEncoded(341226654)); writer.Write("</td></tr>"); list.Clear(); AnrManager.ResolveOneRecipient(participant.DisplayName, userContext, list); if (list.Count == 0) { RecipientAddress recipientAddress = AnrManager.ResolveAnrStringToOneOffEmail(participant.DisplayName); if (recipientAddress != null) { list.Add(recipientAddress); } } int num4 = 0; while (num4 < list.Count && num4 < 100) { RecipientAddress recipientAddress2 = list[num4]; if (recipientAddress2.DisplayName != null) { writer.Write("<tr><td><a href=\"#\" title=\""); Utilities.HtmlEncode(recipientAddress2.DisplayName, writer); if (recipientAddress2.SmtpAddress != null) { writer.Write(" ["); Utilities.HtmlEncode(recipientAddress2.SmtpAddress, writer); writer.Write("]"); } writer.Write("\" onClick=\"return onClkAddAnr(this,'"); ResolvedRecipientDetail resolvedRecipientDetail = new ResolvedRecipientDetail(recipientAddress2); resolvedRecipientDetail.RenderConcatenatedDetails(true, writer); writer.Write("',"); writer.Write((int)recipientItemType); writer.Write(",'"); writer.Write(text); writer.Write("')\">"); Utilities.CropAndRenderText(writer, recipientAddress2.DisplayName, 24); if (string.IsNullOrEmpty(recipientAddress2.DisplayName) && !string.IsNullOrEmpty(recipientAddress2.SmtpAddress)) { writer.Write("("); Utilities.CropAndRenderText(writer, recipientAddress2.SmtpAddress, 24); writer.Write(")"); } writer.Write("</a></td></tr>"); } num4++; } } } } return(flag); }