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; }
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); } }
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(); }
public static void SendNDRForFailedSubmission(IReadOnlyMailItem ndrMailItem, SmtpResponse ndrReason, DsnMailOutHandlerDelegate dsnMailOutHandler) { ConfigurationProvider.ConfigurationProviderInstance.SendNDRForFailedSubmission(ndrMailItem, ndrReason, dsnMailOutHandler); }
public static void SendNDRForInvalidAddresses(IReadOnlyMailItem mailItemToSubmit, List <DsnRecipientInfo> invalidRecipients, DsnMailOutHandlerDelegate dsnMailOutHandler) { ConfigurationProvider.ConfigurationProviderInstance.SendNDRForInvalidAddresses(mailItemToSubmit, invalidRecipients, dsnMailOutHandler); }
public SmtpMailItemResult Send(IReadOnlyMailItem readOnlyMailItem, bool useLocalHubOnly, TimeSpan waitTimeOut) { return(this.Send(readOnlyMailItem, useLocalHubOnly, waitTimeOut, null)); }
public SmtpMailItemResult Send(IReadOnlyMailItem readOnlyMailItem) { return(this.Send(readOnlyMailItem, false, TimeSpan.FromMinutes(15.0))); }