private ExchangePrincipal GetExchangePrincipalForRecipient(MailRecipient recipient, DeliverableItem item, ICollection <CultureInfo> recipientLanguages, bool useCompletePrincipal) { ADSessionSettings adsessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(recipient.MailItemScopeOrganizationId); Guid databaseGuid = this.context.MbxTransportMailItem.DatabaseGuid; ExchangePrincipal exchangePrincipal; if (this.IsPublicFolderRecipient(item)) { ADObjectId value = recipient.ExtendedProperties.GetValue <ADObjectId>("Microsoft.Exchange.Transport.DirectoryData.ContentMailbox", null); StoreObjectId storeObjectId = null; if (value == null || !StoreObjectId.TryParseFromHexEntryId(recipient.ExtendedProperties.GetValue <string>("Microsoft.Exchange.Transport.DirectoryData.EntryId", null), out storeObjectId)) { throw new SmtpResponseException(AckReason.UnableToDetermineTargetPublicFolderMailbox, MessageAction.Reroute); } this.deliverToFolder = storeObjectId; try { exchangePrincipal = ExchangePrincipal.FromDirectoryObjectId(DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, ConsistencyMode.IgnoreInvalid, adsessionSettings, 830, "GetExchangePrincipalForRecipient", "f:\\15.00.1497\\sources\\dev\\MailboxTransport\\src\\MailboxTransportDelivery\\StoreDriver\\DeliveryItem.cs"), value, RemotingOptions.LocalConnectionsOnly); goto IL_14C; } catch (Microsoft.Exchange.Data.Storage.ObjectNotFoundException) { throw new SmtpResponseException(AckReason.PublicFolderMailboxNotFound, MessageAction.Reroute); } } MailboxItem mailboxItem = item as MailboxItem; if (mailboxItem == null) { throw new InvalidOperationException("Delivery to PFDBs is not supported in E15"); } if (!useCompletePrincipal) { string legacyExchangeDN; if (!recipient.ExtendedProperties.TryGetValue <string>("Microsoft.Exchange.Transport.MailRecipient.DisplayName", out legacyExchangeDN)) { legacyExchangeDN = mailboxItem.LegacyExchangeDN; } exchangePrincipal = ExchangePrincipal.FromMailboxData(legacyExchangeDN, adsessionSettings, databaseGuid, mailboxItem.MailboxGuid, mailboxItem.LegacyExchangeDN, recipient.Email.ToString(), recipientLanguages ?? new MultiValuedProperty <CultureInfo>(), true, mailboxItem.RecipientType, mailboxItem.RecipientTypeDetails.GetValueOrDefault()); } else { ProxyAddress proxyAddress = new SmtpProxyAddress((string)recipient.Email, true); exchangePrincipal = ExchangePrincipal.FromProxyAddress(adsessionSettings, proxyAddress.ToString()); } IL_14C: if (exchangePrincipal.MailboxInfo.IsRemote) { throw new SmtpResponseException(AckReason.RecipientMailboxIsRemote, MessageAction.Reroute); } if (exchangePrincipal.MailboxInfo.Location == MailboxDatabaseLocation.Unknown) { throw new SmtpResponseException(AckReason.RecipientMailboxLocationInfoNotAvailable, MessageAction.Reroute); } return(exchangePrincipal); }
private void OnDeleting(MailboxItem itemView) { this.toRemove = itemView.Item; ConfirmationWindow.Instance.Confirmed += OnDeleteConfirmed; ConfirmationWindow.Instance.Cancelled += OnDeleteCancelled; ConfirmationWindow.Instance.Show( I18N.Instance.Get("ui_confirm_delete_x").ToString(this.toRemove.ColoredName), I18N.Instance.Get("ui_delete") ); }
public void Parse() { var input = new [] { "HEADER", "------", "9377777777777 Y ORDERS 15844 001111111111111111 2 " }; var actual = MailboxItem.Parse(input); Assert.AreEqual(1, actual.Count); var item = actual.First(); Assert.AreEqual("9377777777777", item.SenderId); Assert.AreEqual("Y", item.St); Assert.AreEqual("ORDERS", item.ApplicationReference); Assert.AreEqual("15844", item.SenderReference); Assert.AreEqual("001111111111111111", item.ServiceReference); Assert.AreEqual("2", item.Size); }
public virtual DeliverableItem CreateSession() { if (this.mailItemDeliver.Recipient.ExtendedProperties.Count == 0) { throw new SmtpResponseException(AckReason.ExtendedPropertiesNotAvailable, MessageAction.Reroute); } DeliverableItem deliverableItem = RecipientItem.Create(this.mailItemDeliver.Recipient) as DeliverableItem; if (deliverableItem == null) { throw new SmtpResponseException(AckReason.NotResolvedRecipient, MessageAction.Reroute); } this.mailItemDeliver.Stage = this.mailItemDeliver.DeliveryBreadcrumb.SetStage(MailItemDeliver.DeliveryStage.CreateReplay); this.mailItemDeliver.CreateReplay(); this.mailItemDeliver.IsPublicFolderRecipient = (deliverableItem.RecipientType == RecipientType.PublicFolder); int value; if (DeliveryThrottling.Instance.TryGetDatabaseHealth(this.mailItemDeliver.MbxTransportMailItem.DatabaseGuid, out value)) { this.mailItemDeliver.DatabaseHealthMeasureToLog = new int?(value); } if (!this.mailItemDeliver.IsPublicFolderRecipient) { this.mailItemDeliver.ExtractCulture(); } MailboxItem mailboxItem = deliverableItem as MailboxItem; if (mailboxItem != null) { this.mailItemDeliver.RecipientMailboxGuid = mailboxItem.MailboxGuid; } this.mailItemDeliver.Stage = this.mailItemDeliver.DeliveryBreadcrumb.SetStage(MailItemDeliver.DeliveryStage.CreateSession); this.mailItemDeliver.CreateSession(deliverableItem); this.mailItemDeliver.Stage = this.mailItemDeliver.DeliveryBreadcrumb.SetStage(MailItemDeliver.DeliveryStage.OnPromotedEvent); this.mailItemDeliver.RaiseEvent("OnPromotedMessage", LatencyComponent.StoreDriverOnPromotedMessage); return(deliverableItem); }
private void OnClicked(MailboxItem itemView) { Pick?.Invoke(itemView.Item); }