Ejemplo n.º 1
0
        private void CreateSessionInternal(MailRecipient recipient, OpenTransportSessionFlags deliveryFlags, DeliverableItem item, ICollection <CultureInfo> recipientLanguages, bool useCompletePrincipal)
        {
            bool isPublicFolderRecipient   = this.IsPublicFolderRecipient(item);
            ExchangePrincipal principal    = this.GetExchangePrincipalForRecipient(recipient, item, recipientLanguages, useCompletePrincipal);
            string            databaseName = this.context.MbxTransportMailItem.DatabaseName;

            this.LogConnection(databaseName, "Mailbox");
            this.RunUnderOpenStoreSessionFailedLogger(databaseName, delegate
            {
                if (isPublicFolderRecipient)
                {
                    this.storeSession = PublicFolderSession.OpenAsTransport(principal, deliveryFlags);
                    return;
                }
                this.storeSession = MailboxSession.OpenAsTransport(principal, deliveryFlags);
            });
            if (!isPublicFolderRecipient)
            {
                this.storeSession.ExTimeZone = ExTimeZone.CurrentTimeZone;
            }
        }
Ejemplo n.º 2
0
        public void CreateSession(MailRecipient recipient, OpenTransportSessionFlags deliveryFlags, DeliverableItem item, ICollection <CultureInfo> recipientLanguages)
        {
            bool flag = this.IsPublicFolderRecipient(item);

            if (flag)
            {
                DeliveryItem.Diag.TracePfd(0L, "PFD ESD {0} Deliver to PF recipient {1} on MDB {2} with public folder GUID {3}", new object[]
                {
                    29595,
                    item.LegacyExchangeDN,
                    item.HomeMdbDN,
                    this.context.MbxTransportMailItem.DatabaseGuid
                });
            }
            else
            {
                DeliveryItem.Diag.TracePfd <int, string, string>(0L, "PFD ESD {0} Deliver to Mailbox recipient {1} on MDB {2}", 19611, item.LegacyExchangeDN, item.HomeMdbDN);
            }
            this.ValidateLegacyDN(recipient, item.LegacyExchangeDN);
            bool flag2 = false;

            try
            {
                this.CreateSessionInternal(recipient, deliveryFlags, item, recipientLanguages, false);
            }
            catch (MailboxUnavailableException ex)
            {
                if (-2146233088 != ex.ErrorCode)
                {
                    throw;
                }
                DeliveryItem.Diag.TraceDebug <string>(0L, "Failed to open mailbox {0} with stripped principal. Will retry with complete principal", recipient.Email.ToString());
                flag2 = true;
            }
            if (flag2)
            {
                this.CreateSessionInternal(recipient, deliveryFlags, item, recipientLanguages, true);
            }
        }