public void SendNDRForFailedSubmission(IReadOnlyMailItem ndrMailItem, SmtpResponse ndrReason, DsnMailOutHandlerDelegate dsnMailOutHandler)
        {
            List <DsnRecipientInfo> list = new List <DsnRecipientInfo>();

            list.Add(DsnGenerator.CreateDsnRecipientInfo(null, (string)ndrMailItem.From, null, ndrReason));
            Components.DsnGenerator.GenerateNDRForInvalidAddresses(false, ndrMailItem, list, dsnMailOutHandler);
        }
 public SmtpMailItemNextHopConnection(NextHopSolutionKey key, IReadOnlyMailItem mailItem, ISmtpMailItemSenderNotifications notificationHandler) : base(null, 0L, DeliveryPriority.Normal, null)
 {
     this.key                    = key;
     this.mailItem               = mailItem;
     this.readyRecipients        = this.GetReadyRecipients();
     this.recipientsPending      = this.readyRecipients.Count;
     this.recipientEnumerator    = this.mailItem.Recipients.GetEnumerator();
     this.recipientEnumeratorAck = this.mailItem.Recipients.GetEnumerator();
     this.notificationHandler    = notificationHandler;
 }
Esempio n. 3
0
 public override void SubmitMessage(IReadOnlyMailItem originalMailItem, EmailMessage message, OrganizationId organizationId, Guid externalOrganizationId, bool suppressDSNs)
 {
     try
     {
         TransportMailItem mailItem = SubmitHelper.CreateTransportMailItem(originalMailItem, message, this.Name, this.Version, (base.AssociatedAgent != null) ? base.AssociatedAgent.Name : "StoreDriverServer", null, null, organizationId, externalOrganizationId, false);
         this.SubmitMailItem(mailItem, suppressDSNs);
     }
     catch (Exception innerException)
     {
         throw new StoreDriverAgentTransientException(Strings.StoreDriverAgentTransientExceptionEmail, innerException);
     }
 }
Esempio n. 4
0
        public SmtpMailItemResult Send(IReadOnlyMailItem readOnlyMailItem, bool useLocalHubOnly, TimeSpan waitTimeOut, ISmtpMailItemSenderNotifications notificationHandler)
        {
            if (readOnlyMailItem == null)
            {
                throw new ArgumentNullException("readOnlyMailItem");
            }
            IEnumerable <INextHopServer> enumerable;

            if (useLocalHubOnly)
            {
                string text = SmtpMailItemSender.LocalFQDN;
                bool   flag = SmtpMailItemSender.IsFrontendAndHubColocatedServer;
                if (string.IsNullOrEmpty(text))
                {
                    throw new InvalidOperationException("Email is unable to be sent because the name of the local machine can not be detemined.");
                }
                enumerable = new List <INextHopServer>();
                ((List <INextHopServer>)enumerable).Add(new NextHopFqdn(text, flag));
            }
            else
            {
                LatencyTracker.BeginTrackLatency(LatencyComponent.MailboxTransportSubmissionStoreDriverSubmissionHubSelector, readOnlyMailItem.LatencyTracker);
                if (!Components.ProxyHubSelectorComponent.ProxyHubSelector.TrySelectHubServers(readOnlyMailItem, out enumerable))
                {
                    throw new InvalidOperationException("Email is unable to be sent because Hub Selector didn't return any HUBs.");
                }
                LatencyTracker.EndTrackLatency(LatencyComponent.MailboxTransportSubmissionStoreDriverSubmissionHubSelector, readOnlyMailItem.LatencyTracker);
            }
            NextHopSolutionKey key = new NextHopSolutionKey(NextHopType.Empty, "MailboxTransportSubmissionInternalProxy", Guid.Empty);
            SmtpMailItemResult smtpMailItemResult;

            using (SmtpMailItemNextHopConnection smtpMailItemNextHopConnection = new SmtpMailItemNextHopConnection(key, readOnlyMailItem, notificationHandler))
            {
                LatencyTracker.BeginTrackLatency(LatencyComponent.MailboxTransportSubmissionStoreDriverSubmissionSmtpOut, readOnlyMailItem.LatencyTracker);
                Components.SmtpOutConnectionHandler.HandleProxyConnection(smtpMailItemNextHopConnection, enumerable, true, null);
                smtpMailItemNextHopConnection.AckConnectionEvent.WaitOne(waitTimeOut);
                LatencyTracker.EndTrackLatency(LatencyComponent.MailboxTransportSubmissionStoreDriverSubmissionSmtpOut, readOnlyMailItem.LatencyTracker);
                smtpMailItemResult = smtpMailItemNextHopConnection.SmtpMailItemResult;
            }
            return(smtpMailItemResult);
        }
 public void SendNDRForInvalidAddresses(IReadOnlyMailItem mailItem, List <DsnRecipientInfo> invalidRecipients, DsnMailOutHandlerDelegate dsnMailOutHandler)
 {
     Components.DsnGenerator.GenerateNDRForInvalidAddresses(false, mailItem, invalidRecipients, dsnMailOutHandler);
 }
 public virtual void SubmitMessage(IReadOnlyMailItem originalMailItem, EmailMessage message, OrganizationId organizationId, Guid externalOrganizationId, bool suppressDSNs)
 {
     throw new NotImplementedException();
 }
Esempio n. 7
0
 public static void SendNDRForFailedSubmission(IReadOnlyMailItem ndrMailItem, SmtpResponse ndrReason, DsnMailOutHandlerDelegate dsnMailOutHandler)
 {
     ConfigurationProvider.ConfigurationProviderInstance.SendNDRForFailedSubmission(ndrMailItem, ndrReason, dsnMailOutHandler);
 }
Esempio n. 8
0
 public static void SendNDRForInvalidAddresses(IReadOnlyMailItem mailItemToSubmit, List <DsnRecipientInfo> invalidRecipients, DsnMailOutHandlerDelegate dsnMailOutHandler)
 {
     ConfigurationProvider.ConfigurationProviderInstance.SendNDRForInvalidAddresses(mailItemToSubmit, invalidRecipients, dsnMailOutHandler);
 }
Esempio n. 9
0
 public SmtpMailItemResult Send(IReadOnlyMailItem readOnlyMailItem, bool useLocalHubOnly, TimeSpan waitTimeOut)
 {
     return(this.Send(readOnlyMailItem, useLocalHubOnly, waitTimeOut, null));
 }
Esempio n. 10
0
 public SmtpMailItemResult Send(IReadOnlyMailItem readOnlyMailItem)
 {
     return(this.Send(readOnlyMailItem, false, TimeSpan.FromMinutes(15.0)));
 }