public static bool IsInternal(RoutingAddress routingAddress, OrganizationId organizationId) { if (organizationId == null) { throw new ArgumentNullException("organizationId"); } if (string.IsNullOrEmpty(routingAddress.DomainPart)) { throw new ArgumentException(string.Format("routingAddress.DomainPart is null or empty for the routingaddress:{0}.", routingAddress)); } OwaPerTenantAcceptedDomains owaPerTenantAcceptedDomains = ADCacheUtils.GetOwaPerTenantAcceptedDomains(organizationId); OwaPerTenantRemoteDomains owaPerTenantRemoteDomains = ADCacheUtils.GetOwaPerTenantRemoteDomains(organizationId); IsInternalResolver isInternalResolver = new IsInternalResolver(organizationId, new IsInternalResolver.GetAcceptedDomainCollectionDelegate(owaPerTenantAcceptedDomains.GetAcceptedDomainMap), new IsInternalResolver.GetRemoteDomainCollectionDelegate(owaPerTenantRemoteDomains.GetRemoteDomainMap)); return(isInternalResolver.IsInternal(new RoutingDomain(routingAddress.DomainPart))); }
private void CacheDataFromOriginalMessage() { try { if (this.isOriginalMessageDataCached) { ModerationApprovalRequestWriter.diag.TraceDebug((long)this.GetHashCode(), "Original data cached."); } else { this.isOriginalMessageDataCached = true; ModerationApprovalRequestWriter.diag.TraceDebug((long)this.GetHashCode(), "Getting original message for cache."); this.CacheModeratedRecipients(); this.originalMessageStream = this.GetOriginalMessageReadStream(); if (this.originalMessageStream == null) { ModerationApprovalRequestWriter.diag.TraceError(0L, "There is no original message attached in initiation message."); } else { this.originalMimeDom = new MimeDocument(); this.originalMimeDom.Load(this.originalMessageStream, CachingMode.Source); this.originalEmailMessage = EmailMessage.Create(this.originalMimeDom); this.originalToFormattedLine = ModerationApprovalRequestWriter.FormatRecipients(this.originalEmailMessage.To); this.originalCcFormattedLine = ModerationApprovalRequestWriter.FormatRecipients(this.originalEmailMessage.Cc); EmailRecipient sender = this.originalEmailMessage.Sender; if (sender != null && !string.IsNullOrEmpty(sender.DisplayName)) { if (!string.IsNullOrEmpty(sender.SmtpAddress) && this.organizationId != null && !IsInternalResolver.IsInternal(new RoutingAddress(sender.SmtpAddress), this.organizationId)) { this.originalSenderDisplayName = sender.DisplayName + "(" + sender.SmtpAddress + ")"; } else { this.originalSenderDisplayName = sender.DisplayName; } } else { this.originalSenderDisplayName = (string)this.initiationMessage.Requestor; } this.originalMesssageBodyFormat = this.originalEmailMessage.Body.BodyFormat; string charsetName = this.originalEmailMessage.Body.CharsetName; Charset charset; if (!string.IsNullOrEmpty(charsetName) && Charset.TryGetCharset(charsetName, out charset) && charset.IsAvailable) { ModerationApprovalRequestWriter.diag.TraceDebug <string>((long)this.GetHashCode(), "original message body has charset {0}", charsetName); this.originalMessageBodyCharset = charset; } else { ModerationApprovalRequestWriter.diag.TraceDebug <string>((long)this.GetHashCode(), "original message charset not valid {0}", charsetName); } this.hasInlineAttachment = false; if (this.originalMesssageBodyFormat == Microsoft.Exchange.Data.Transport.Email.BodyFormat.Rtf) { if (this.originalEmailMessage.Attachments != null && this.originalEmailMessage.Attachments.Count > 0) { this.hasInlineAttachment = true; } } else if (this.originalMesssageBodyFormat != Microsoft.Exchange.Data.Transport.Email.BodyFormat.Text && this.originalMesssageBodyFormat == Microsoft.Exchange.Data.Transport.Email.BodyFormat.Html && this.originalEmailMessage.Attachments != null && this.originalEmailMessage.Attachments.Count > 0) { foreach (Attachment attachment in this.originalEmailMessage.Attachments) { if (attachment.AttachHidden || attachment.AttachmentType == AttachmentType.Inline) { this.hasInlineAttachment = true; break; } } } this.isOpaqueMessage = this.originalEmailMessage.IsOpaqueMessage; } } } catch (ExchangeDataException arg) { ModerationApprovalRequestWriter.diag.TraceError <ExchangeDataException>((long)this.GetHashCode(), "Cannot cache all data required for moderation approval request {0}", arg); } }