Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }