1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
package ses
import (
"time"
)
//http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#top-level-json-object
const (
NOTIFICATION_TYPE_BOUNCE = "Bounce"
NOTIFICATION_TYPE_COMPLAINT = "Complaint"
NOTIFICATION_TYPE_DELIVERY = "Delivery"
//http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types
BOUNCE_TYPE_UNDETERMINED = "Undetermined"
BOUNCE_TYPE_PERMANENT = "Permanent"
BOUNCE_TYPE_TRANSIENT = "Transient"
BOUNCE_SUBTYPE_UNDETERMINED = "Undetermined"
BOUNCE_SUBTYPE_GENERAL = "General"
BOUNCE_SUBTYPE_NO_EMAIL = "NoEmail"
BOUNCE_SUBTYPE_SUPPRESSED = "Suppressed"
BOUNCE_SUBTYPE_MAILBOX_FULL = "MailboxFull"
BOUNCE_SUBTYPE_MESSAGE_TOO_LARGE = "MessageTooLarge"
BOUNCE_SUBTYPE_CONTENT_REJECTED = "ContentRejected"
BOUNCE_SUBTYPE_ATTACHMENT_REJECTED = "AttachmentRejected"
// http://www.iana.org/assignments/marf-parameters/marf-parameters.xml#marf-parameters-2
COMPLAINT_FEEDBACK_TYPE_ABUSE = "abuse"
COMPLAINT_FEEDBACK_TYPE_AUTH_FAILURE = "auth-failure"
COMPLAINT_FEEDBACK_TYPE_FRAUD = "fraud"
COMPLAINT_FEEDBACK_TYPE_NOT_SPAM = "not-spam"
COMPLAINT_FEEDBACK_TYPE_OTHER = "other"
COMPLAINT_FEEDBACK_TYPE_VIRUS = "virus"
)
type SNSNotification struct {
NotificationType string `json:"notificationType"`
Bounce *Bounce `json:"bounce" optional`
Complaint *Complaint `json:"complaint" optional`
Delivery *Delivery `json:"delivery" optional`
Mail *Mail `json:"mail"`
}
// Represent the delivery of an email
type Mail struct {
Timestamp time.Time `json:"timestamp"`
MessageId string `json:"messageId"`
Source string `json:"source"`
Destination []string `json:"destination"`
}
// A bounced recipient
// http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounced-recipients
type BouncedRecipient struct {
EmailAddress string `json:"emailAddress"`
Action string `json:"action"`
Status string `json:"status"`
DiagnosticCode string `json:"diagnosticCode"`
}
// A bounce notifiction object
// http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-object
type Bounce struct {
BounceType string `json:"bounceType"`
BounceSubType string `json:"bounceSubType"`
BouncedRecipients []*BouncedRecipient `json:"bouncedRecipients"`
ReportingMTA string `json:"reportingMTA"`
Timestamp time.Time `json:"timestamp"`
FeedbackId string `json:"feedbackId"`
}
// A receipient which complained
// http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#complained-recipients
type ComplainedRecipient struct {
EmailAddress string `json:"emailAddress"`
}
// A complain notification object
// http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#complaint-object
type Complaint struct {
UserAgent string `json:"userAgent"`
ComplainedRecipients []*BouncedRecipient `json:"complainedRecipients"`
ComplaintFeedbackType string `json:"complaintFeedbackType"`
ArrivalDate time.Time `json:"arrivalDate"`
Timestamp time.Time `json:"timestamp"`
FeedbackId string `json:"feedbackId"`
}
// A successful delivery
// http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#delivery-object
type Delivery struct {
Timestamp time.Time `json:"timestamp"`
ProcessingTimeMillis int64 `json:"processingTimeMillis"`
Recipients []string `json:"recipients"`
SmtpResponse string `json:"smtpResponse"`
ReportingMTA string `json:"reportingMTA"`
}
|