예제 #1
0
        public string[] Serialize()
        {
            if (!this.Enabled || this.data == null)
            {
                return(null);
            }
            string[] array = new string[this.data.Count];
            int      num   = 0;
            bool     flag  = false;

            foreach (IEnumerable <KeyValuePair <string, object> > enumerable in this.data)
            {
                array[num] = LogRowFormatter.FormatCollection(enumerable, out flag);
                if (flag)
                {
                    byte[] array2 = Utf8Csv.EncodeAndEscape(array[num]);
                    if (array2 == null)
                    {
                        return(null);
                    }
                    array[num] = Encoding.UTF8.GetString(array2);
                }
                num++;
            }
            return(array);
        }
예제 #2
0
        public Stream GetStreamFromContacts()
        {
            ContactsExporter.Tracer.TraceFunction((long)this.GetHashCode(), "Entering ContactExporter.GetStreamFromContacts.");
            Stream stream = new PooledMemoryStream(1024);

            Utf8Csv.WriteBom(stream);
            Utf8Csv.WriteHeaderRow(stream, this.headers.ToArray <string>());
            this.WriteAllContacts(stream);
            stream.Position = 0L;
            ContactsExporter.Tracer.TraceFunction <long>((long)this.GetHashCode(), "Leaving ContactExporter.GetStreamFromContacts. Data Size {0}", stream.Length);
            return(stream);
        }
예제 #3
0
 private static void CheckAndWrite(Stream attachmentStream, object propertyValue)
 {
     if (propertyValue == null)
     {
         Utf8Csv.EncodeEscapeAndWrite(attachmentStream, string.Empty);
     }
     else
     {
         Utf8Csv.EncodeEscapeAndWrite(attachmentStream, propertyValue.ToString());
     }
     Utf8Csv.WriteByte(attachmentStream, 44);
 }
예제 #4
0
        private void WriteContact(Stream stream, IStorePropertyBag contact)
        {
            List <byte[]> list = new List <byte[]>(this.properties.Length);

            foreach (PropertyDefinition propertyDefinition in this.properties)
            {
                object obj = contact.TryGetProperty(propertyDefinition);
                if (obj == null || PropertyError.IsPropertyNotFound(obj))
                {
                    obj = string.Empty;
                }
                list.Add(Utf8Csv.EncodeAndEscape(obj.ToString()));
            }
            Utf8Csv.WriteRawRow(stream, list.ToArray());
        }
 private static string GetCsvEscapedString(object value)
 {
     return(Encoding.UTF8.GetString(Utf8Csv.EncodeAndEscape(value.ToString(), true)));
 }
예제 #6
0
 public static EmailMessage GenerateContentReport(SmtpAddress arbitrationAddress, SmtpAddress reportToAddress, StoreSession session, bool isArbitration)
 {
     if (arbitrationAddress.IsValidAddress && reportToAddress.IsValidAddress)
     {
         EmailMessage   emailMessage = EmailMessage.Create();
         RoutingAddress address      = GlobalConfigurationBase <MicrosoftExchangeRecipient, MicrosoftExchangeRecipientConfiguration> .Instance.Address;
         emailMessage.From = new EmailRecipient(null, (string)address);
         emailMessage.To.Add(new EmailRecipient(null, (string)reportToAddress));
         emailMessage.Subject = "Arbitration Mailbox Content Report: " + arbitrationAddress.ToString();
         using (Stream contentWriteStream = emailMessage.Body.GetContentWriteStream())
         {
             using (StreamWriter streamWriter = new StreamWriter(contentWriteStream))
             {
                 if (!isArbitration)
                 {
                     streamWriter.WriteLine("This mailbox is not an approval arbitration mailbox. This report is only generated for approval arbitration mailboxes.");
                     return(emailMessage);
                 }
                 Attachment attachment = emailMessage.Attachments.Add("formattedDetails.txt");
                 using (Stream contentWriteStream2 = attachment.GetContentWriteStream())
                 {
                     using (Folder folder = Folder.Bind((MailboxSession)session, DefaultFolderType.Inbox))
                     {
                         using (QueryResult queryResult = folder.ItemQuery(ItemQueryType.None, null, null, new PropertyDefinition[]
                         {
                             ItemSchema.Id
                         }))
                         {
                             object[][] rows = queryResult.GetRows(10000);
                             int        num  = 0;
                             int        num2 = 0;
                             TimeSpan   t    = default(TimeSpan);
                             TimeSpan   t2   = default(TimeSpan);
                             while (rows != null && rows.Length > 0)
                             {
                                 foreach (object[] array2 in rows)
                                 {
                                     StoreObjectId objectId = ((VersionedId)array2[0]).ObjectId;
                                     using (MessageItem messageItem = MessageItem.Bind(session, objectId, ArbitrationMailboxReport.ApprovalProperties))
                                     {
                                         string         valueOrDefault   = messageItem.GetValueOrDefault <string>(MessageItemSchema.ApprovalRequestor);
                                         string         valueOrDefault2  = messageItem.GetValueOrDefault <string>(ItemSchema.DisplayCc);
                                         string         valueOrDefault3  = messageItem.GetValueOrDefault <string>(ItemSchema.Subject);
                                         string         valueOrDefault4  = messageItem.GetValueOrDefault <string>(MessageItemSchema.ApprovalAllowedDecisionMakers);
                                         string         valueOrDefault5  = messageItem.GetValueOrDefault <string>(MessageItemSchema.ApprovalDecisionMakersNdred);
                                         string         valueOrDefault6  = messageItem.GetValueOrDefault <string>(MessageItemSchema.ApprovalRequestMessageId);
                                         string         valueOrDefault7  = messageItem.GetValueOrDefault <string>(ItemSchema.InternetMessageId);
                                         string         valueOrDefault8  = messageItem.GetValueOrDefault <string>(ItemSchema.InternetReferences);
                                         string         valueOrDefault9  = messageItem.GetValueOrDefault <string>(MessageItemSchema.ApprovalDecisionMaker);
                                         ApprovalStatus?valueAsNullable  = messageItem.GetValueAsNullable <ApprovalStatus>(MessageItemSchema.ApprovalStatus);
                                         ExDateTime?    valueAsNullable2 = messageItem.GetValueAsNullable <ExDateTime>(MessageItemSchema.ApprovalDecisionTime);
                                         ExDateTime?    valueAsNullable3 = messageItem.GetValueAsNullable <ExDateTime>(ItemSchema.ReceivedTime);
                                         ExDateTime?    valueAsNullable4 = messageItem.GetValueAsNullable <ExDateTime>(ItemSchema.RetentionDate);
                                         if (valueAsNullable3 != null)
                                         {
                                             if (valueAsNullable2 == null)
                                             {
                                                 ExDateTime utcNow = ExDateTime.UtcNow;
                                                 t2 += utcNow - valueAsNullable3.Value;
                                                 num2++;
                                             }
                                             else if (valueAsNullable3 <= valueAsNullable2)
                                             {
                                                 t += valueAsNullable2.Value - valueAsNullable3.Value;
                                                 num++;
                                             }
                                         }
                                         streamWriter.WriteLine("Initiation Message ID:" + valueOrDefault7);
                                         streamWriter.WriteLine("Original Message ID:" + valueOrDefault8);
                                         streamWriter.WriteLine("Sender:" + valueOrDefault);
                                         streamWriter.WriteLine("Moderated Recipient Addresses:" + valueOrDefault2);
                                         streamWriter.WriteLine("Message Subject:" + valueOrDefault3);
                                         streamWriter.WriteLine("Moderators:" + valueOrDefault4);
                                         streamWriter.WriteLine("Moderators (total; not delivered; away):" + valueOrDefault5);
                                         streamWriter.WriteLine("Approval Request Message ID:" + valueOrDefault6);
                                         streamWriter.WriteLine("Decision maker:" + valueOrDefault9);
                                         streamWriter.WriteLine("Decision status:" + valueAsNullable);
                                         streamWriter.WriteLine("Decision Time:" + valueAsNullable2);
                                         streamWriter.WriteLine("Received Time:" + valueAsNullable3);
                                         streamWriter.WriteLine("Expiry Time:" + valueAsNullable4);
                                         streamWriter.WriteLine();
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault7);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault8);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault2);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault3);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault4);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault5);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault6);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault9);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueAsNullable);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueOrDefault6);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueAsNullable2);
                                         ArbitrationMailboxReport.CheckAndWrite(contentWriteStream2, valueAsNullable3);
                                         Utf8Csv.EncodeEscapeAndWriteLine(contentWriteStream2, (valueAsNullable4 != null) ? valueAsNullable4.ToString() : string.Empty);
                                     }
                                 }
                                 rows = queryResult.GetRows(10000);
                             }
                             streamWriter.WriteLine("Summary:");
                             streamWriter.WriteLine("Messages with a decision:" + num);
                             if (num > 0)
                             {
                                 streamWriter.WriteLine("Average decision time:" + TimeSpan.FromSeconds(t.TotalSeconds / (double)num));
                             }
                             streamWriter.WriteLine("Messages without a decision:" + num2);
                             if (num2 > 0)
                             {
                                 streamWriter.WriteLine("Average waiting time:" + TimeSpan.FromSeconds(t2.TotalSeconds / (double)num2));
                             }
                         }
                     }
                 }
                 return(emailMessage);
             }
         }
     }
     return(null);
 }