internal static int CopyRecipientsTo(SubmissionItemBase submissionItem, TransportMailItem mailItem, SubmissionRecipientHandler recipientHandler, ref List <string> unresolvableRecipients, ref List <string> notResponsibleRecipientsList, bool useParticipantSmtpEmailAddressIfNecessary, out List <string> participantSmtpEmailAddressBeneficiaries) { participantSmtpEmailAddressBeneficiaries = new List <string>(); TraceHelper.StoreDriverTracer.TracePass <long>(TraceHelper.MessageProbeActivityId, 0L, "SubmissionItemUtils.CopyRecipientsTo: Copy recipients to mailitem {0}", mailItem.RecordId); bool resubmittedMessage = submissionItem.ResubmittedMessage; mailItem.ExtendedProperties.SetValue <bool>("Microsoft.Exchange.Transport.ResentMapiMessage", resubmittedMessage); List <MimeRecipient> list = new List <MimeRecipient>(); List <string> list2 = null; List <string> list3 = null; int num = 0; TraceHelper.StoreDriverTracer.TracePass <string>(TraceHelper.MessageProbeActivityId, 0L, "Copying recipients for {0} message", resubmittedMessage ? "resubmitted" : "regular"); foreach (Recipient recipient in submissionItem.Recipients) { string emailAddress = recipient.Participant.EmailAddress; TraceHelper.StoreDriverTracer.TracePass <string>(TraceHelper.MessageProbeActivityId, 0L, "Processing recipient: {0}", emailAddress); int? num2 = null; RoutingAddress arg; bool flag; if (!SubmissionItemUtils.GetP2RecipientType(resubmittedMessage, recipient, out num2)) { TraceHelper.StoreDriverTracer.TracePass <int>(TraceHelper.MessageProbeActivityId, 0L, "SubmissionItemUtils.CopyRecipientsTo: Saving recipient type {0} of P2 recipient on resubmitted message", num2.Value); SubmissionItemUtils.SaveP2Recipient(mailItem, emailAddress, num2.Value, ref list2, ref list3); } else if (!SubmissionItemBase.GetValueTypePropValue <bool>(recipient, ItemSchema.Responsibility).GetValueOrDefault()) { TraceHelper.StoreDriverTracer.TracePass <Participant>(TraceHelper.MessageProbeActivityId, 0L, "SubmissionItemUtils.CopyRecipientsTo: Skip recipient {0} since PR_RESPONSIBILITY is not true", recipient.Participant); if (notResponsibleRecipientsList == null) { notResponsibleRecipientsList = new List <string>(1); } string item = SubmissionItemUtils.BuildParticipantString(recipient.Participant); notResponsibleRecipientsList.Add(item); } else if (!SubmissionItemUtils.TryGetRoutingAddressFromParticipant(mailItem.ADRecipientCache, recipient.Participant, "Recipient", out arg, out flag, useParticipantSmtpEmailAddressIfNecessary)) { if (recipientHandler != null) { recipientHandler(num2, recipient, mailItem, null); } if (unresolvableRecipients == null) { unresolvableRecipients = new List <string>(1); } string text = SubmissionItemUtils.BuildParticipantString(recipient.Participant); unresolvableRecipients.Add(text); TraceHelper.StoreDriverTracer.TraceFail <string>(TraceHelper.MessageProbeActivityId, 0L, "SubmissionItemUtils.CopyRecipientsTo: Invalid recipient {0}", text); } else { TraceHelper.StoreDriverTracer.TracePass <RoutingAddress, int?>(TraceHelper.MessageProbeActivityId, 0L, "Added recipient: {0}, Type: {1}", arg, num2); string text2 = arg.ToString(); if (flag) { participantSmtpEmailAddressBeneficiaries.Add(text2); } MailRecipient mailRecipient = mailItem.Recipients.Add(text2); num++; if (recipientHandler != null) { recipientHandler(num2, recipient, mailItem, mailRecipient); } string refTypePropValue = SubmissionItemBase.GetRefTypePropValue <string>(recipient, StoreObjectSchema.DisplayName); SubmissionItemUtils.CopyRecipientPropsFromXSOToTransport(submissionItem, recipient, mailRecipient, num2, refTypePropValue); if (num2 != null && num2 == 3) { MimeRecipient item2 = new MimeRecipient(refTypePropValue, text2); list.Add(item2); } } } SubmissionItemUtils.AddExchangeOrganizationBccHeader(list, mailItem); if (list2 != null) { mailItem.ExtendedProperties.SetValue <List <string> >("Microsoft.Exchange.Transport.ResentMapiP2ToRecipients", list2); } if (list3 != null) { mailItem.ExtendedProperties.SetValue <List <string> >("Microsoft.Exchange.Transport.ResentMapiP2CcRecipients", list3); } return(num); }
internal static int CopyRecipientsTo(SubmissionItemBase submissionItem, TransportMailItem mailItem, SubmissionRecipientHandler recipientHandler, ref List <string> unresolvableRecipients, ref List <string> notResponsibleRecipientsList) { List <string> list; return(SubmissionItemUtils.CopyRecipientsTo(submissionItem, mailItem, recipientHandler, ref unresolvableRecipients, ref notResponsibleRecipientsList, false, out list)); }