private static void GenerateDsnBody(MessageItem message, Stream outputStream, DsnHumanReadableWriter dsnWriter, HeaderList headerList, out CultureInfo cultureInfo, out Charset charset) { message.Load(ReportMessageSchema.Instance.AutoloadProperties); MailboxSession mailboxSession = message.Session as MailboxSession; List <DsnRecipientInfo> list = new List <DsnRecipientInfo>(message.Recipients.Count); HashSet <string> hashSet = new HashSet <string>(); foreach (Recipient recipient in message.Recipients) { list.Add(new DsnRecipientInfo(recipient.Participant.DisplayName, recipient.Participant.EmailAddress, recipient.Participant.RoutingType, DsnMdnUtil.GetMimeDsnRecipientStatusCode(recipient).Value, recipient.GetValueOrDefault <string>(InternalSchema.SupplementaryInfo))); string valueOrDefault = recipient.GetValueOrDefault <string>(InternalSchema.RemoteMta); if (!string.IsNullOrEmpty(valueOrDefault)) { hashSet.TryAdd(valueOrDefault); } } StringBuilder stringBuilder = new StringBuilder(hashSet.Count * 20); foreach (string value in hashSet) { stringBuilder.Append(value); stringBuilder.Append(", "); } dsnWriter.CreateDsnHumanReadableBody(outputStream, ReportMessage.GetDsnCultures(mailboxSession, headerList, dsnWriter), message.GetValueOrDefault <string>(InternalSchema.OriginalSubject), list, ReportMessage.GetDsnFlags(message.ClassName), message.GetValueOrDefault <string>(InternalSchema.ReportingMta, string.Empty), (stringBuilder.Length > 0) ? stringBuilder.ToString(0, stringBuilder.Length - ", ".Length) : null, null, headerList, out cultureInfo, out charset); }