package events import "time" // SimpleEmailEvent is the outer structure of an event sent via SES. type SimpleEmailEvent struct { Records []SimpleEmailRecord `json:"Records"` } type SimpleEmailRecord struct { EventVersion string `json:"eventVersion"` EventSource string `json:"eventSource"` SES SimpleEmailService `json:"ses"` } type SimpleEmailService struct { Mail SimpleEmailMessage `json:"mail"` Receipt SimpleEmailReceipt `json:"receipt"` } type SimpleEmailMessage struct { CommonHeaders SimpleEmailCommonHeaders `json:"commonHeaders"` Source string `json:"source"` Timestamp time.Time `json:"timestamp"` Destination []string `json:"destination"` Headers []SimpleEmailHeader `json:"headers"` HeadersTruncated bool `json:"headersTruncated"` MessageID string `json:"messageId"` } type SimpleEmailReceipt struct { Recipients []string `json:"recipients"` Timestamp time.Time `json:"timestamp"` SpamVerdict SimpleEmailVerdict `json:"spamVerdict"` DKIMVerdict SimpleEmailVerdict `json:"dkimVerdict"` DMARCVerdict SimpleEmailVerdict `json:"dmarcVerdict"` DMARCPolicy string `json:"dmarcPolicy"` SPFVerdict SimpleEmailVerdict `json:"spfVerdict"` VirusVerdict SimpleEmailVerdict `json:"virusVerdict"` Action SimpleEmailReceiptAction `json:"action"` ProcessingTimeMillis int64 `json:"processingTimeMillis"` } type SimpleEmailHeader struct { Name string `json:"name"` Value string `json:"value"` } type SimpleEmailCommonHeaders struct { From []string `json:"from"` To []string `json:"to"` ReturnPath string `json:"returnPath"` MessageID string `json:"messageId"` Date string `json:"date"` Subject string `json:"subject"` } // SimpleEmailReceiptAction is a logical union of fields present in all action // Types. For example, the FunctionARN and InvocationType fields are only // present for the Lambda Type, and the BucketName and ObjectKey fields are only // present for the S3 Type. type SimpleEmailReceiptAction struct { Type string `json:"type"` TopicARN string `json:"topicArn,omitempty"` BucketName string `json:"bucketName,omitempty"` ObjectKey string `json:"objectKey,omitempty"` SMTPReplyCode string `json:"smtpReplyCode,omitempty"` StatusCode string `json:"statusCode,omitempty"` Message string `json:"message,omitempty"` Sender string `json:"sender,omitempty"` InvocationType string `json:"invocationType,omitempty"` FunctionARN string `json:"functionArn,omitempty"` OrganizationARN string `json:"organizationArn,omitempty"` } type SimpleEmailVerdict struct { Status string `json:"status"` } // SimpleEmailDispositionValue enumeration representing the dispostition value for SES type SimpleEmailDispositionValue string const ( // SimpleEmailContinue represents the CONTINUE disposition which tells the SES Rule Set to continue to the next rule SimpleEmailContinue SimpleEmailDispositionValue = "CONTINUE" // SimpleEmailStopRule represents the STOP_RULE disposition which tells the SES Rule Set to stop processing this rule and continue to the next SimpleEmailStopRule SimpleEmailDispositionValue = "STOP_RULE" // SimpleEmailStopRuleSet represents the STOP_RULE_SET disposition which tells the SES Rule SEt to stop processing all rules SimpleEmailStopRuleSet SimpleEmailDispositionValue = "STOP_RULE_SET" ) // SimpleEmailDisposition disposition return for SES to control rule functions type SimpleEmailDisposition struct { Disposition SimpleEmailDispositionValue `json:"disposition"` }