private void ComposeLogItemBody(Body itemBody) { if (itemBody == null) { throw new ArgumentNullException("itemBody"); } using (TextWriter textWriter = itemBody.OpenTextWriter(BodyFormat.TextHtml)) { StringBuilder stringBuilder = new StringBuilder(); using (StreamReader streamReader = new StreamReader(Assembly.GetAssembly(typeof(SearchMailboxExecuter)).GetManifestResourceStream("SimpleLogMailTemplate.htm"))) { stringBuilder.Append(streamReader.ReadToEnd()); } SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.LastStartTime, this.searchMailboxExecuter.SearchStartTime); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.SearchQuery, this.SearchQuery); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.TargetMailbox, this.targetUser.Id.DomainUserName()); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.SearchDumpster, this.SearchDumpster); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.LogLevel, this.LogLevel); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.SourceRecipients, (from x in this.searchMailboxExecuter.SearchMailboxCriteria.SearchUserScope select x.Id.DomainUserName()).AggregateOfDefault((string s, string x) => s + ", " + x)); ADObjectId adobjectId = null; base.TryGetExecutingUserId(out adobjectId); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.LastRunBy, (adobjectId == null) ? string.Empty : adobjectId.DomainUserName()); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.NumberMailboxesToSearch, this.searchMailboxExecuter.SearchMailboxCriteria.SearchUserScope.Length); if (this.DeleteContent.IsPresent) { if (base.ParameterSetName == "Mailbox") { SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.SearchOperation, Strings.CopyAndDeleteOperation); } else { SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.SearchOperation, Strings.DeleteOperation); } } else if (this.LogOnly.IsPresent) { SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.SearchOperation, Strings.LogOnlyOperation); } else { SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.SearchOperation, Strings.CopyOperation); } string str = this.errorMessages.AggregateOfDefault((string s, string x) => s + ", " + x); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.Errors, str.ValueOrDefault(Strings.LogMailNone)); long num = 0L; ByteQuantifiedSize byteQuantifiedSize = ByteQuantifiedSize.Zero; if (this.searchMailboxExecuter.SearchState != SearchState.InProgress) { foreach (SearchMailboxResult searchMailboxResult in this.searchMailboxExecuter.GetSearchResult()) { num += (long)searchMailboxResult.ResultItemsCount; byteQuantifiedSize += searchMailboxResult.ResultItemsSize; } } SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.ResultNumber, num); SearchMailbox.ReplaceLogFieldTags(stringBuilder, Globals.LogFields.ResultSize, byteQuantifiedSize); SearchState searchState = (this.searchMailboxExecuter.SearchState == SearchState.InProgress) ? SearchState.Failed : this.searchMailboxExecuter.SearchState; stringBuilder = stringBuilder.Replace(Globals.LogFields.LogMailHeader.ToLabelTag(), Strings.LogMailSimpleHeader(searchState.ToString())); stringBuilder = stringBuilder.Replace(Globals.LogFields.LogMailSeeAttachment.ToLabelTag(), Strings.LogMailSeeAttachment); stringBuilder = stringBuilder.Replace(Globals.LogFields.LogMailFooter.ToLabelTag(), Strings.LogMailFooter); textWriter.Write(stringBuilder.ToString()); } }