private SignalBounce <TKey> CreateBouncedMessage(BounceType type, AmazonSesMail mail , string recipientEmail, string detailsXml) { SignalBounce <TKey> bouncedMessage = new SignalBounce <TKey>() { ReceiverAddress = recipientEmail, BounceType = type, BounceReceiveDateUtc = DateTime.UtcNow, BounceDetailsXML = detailsXml, MessageBody = null, MessageSubject = null, SendDateUtc = null //DeliveryType, ReceiverSubscriberID, BouncedMessageID //are set by NdrHandler }; DateTime timestamp; if (DateTime.TryParse(mail.Timestamp, out timestamp)) { bouncedMessage.SendDateUtc = timestamp; } return(bouncedMessage); }
private List <SignalBounce <TKey> > CreateBounceList(AmazonSesNotification sesNotification) { List <SignalBounce <TKey> > bouncedMessages = new List <SignalBounce <TKey> >(); if (sesNotification.AmazonSesMessageType == AmazonSesMessageType.Unknown) { _logger.LogError("Unknown AWS message type received."); return(bouncedMessages); } //parse NDR else if (sesNotification.AmazonSesMessageType == AmazonSesMessageType.Bounce) { foreach (AmazonSesBouncedRecipient recipient in sesNotification.Bounce.BouncedRecipients) { BounceType bounceType = sesNotification.Bounce.AmazonBounceType == AmazonBounceType.Permanent ? BounceType.HardBounce : BounceType.SoftBounce; string detailsXml = XmlBounceDetails.DetailsToXml(sesNotification.AmazonSesMessageType , sesNotification.Bounce.AmazonBounceType, sesNotification.Bounce.AmazonBounceSubType); SignalBounce <TKey> bouncedMessage = CreateBouncedMessage(bounceType , sesNotification.Mail, recipient.EmailAddress, detailsXml); bouncedMessages.Add(bouncedMessage); } } //parse complaint else if (sesNotification.AmazonSesMessageType == AmazonSesMessageType.Complaint) { foreach (AmazonSesComplaintRecipient recipient in sesNotification.Complaint.ComplainedRecipients) { string detailsXml = XmlBounceDetails.DetailsToXml(sesNotification.AmazonSesMessageType , complaintFeedbackType: sesNotification.Complaint.AmazonComplaintFeedbackType); SignalBounce <TKey> bouncedMessage = CreateBouncedMessage(BounceType.HardBounce , sesNotification.Mail, recipient.EmailAddress, detailsXml); bouncedMessages.Add(bouncedMessage); } } return(bouncedMessages); }