package mail import ( "fmt" "os" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ses" ) const CharSet = "UTF-8" func SendNewsletter(body string) { sess, err := session.NewSession(&aws.Config{ Region: aws.String(os.Getenv("REGION"))}, ) svc := ses.New(sess) input := &ses.SendEmailInput{ Destination: &ses.Destination{ CcAddresses: []*string{}, ToAddresses: []*string{ aws.String(os.Getenv("RECIPIENT")), }, }, Message: &ses.Message{ Body: &ses.Body{ Html: &ses.Content{ Charset: aws.String(CharSet), Data: aws.String(body), }, Text: &ses.Content{ Charset: aws.String(CharSet), Data: aws.String(body), }, }, Subject: &ses.Content{ Charset: aws.String(CharSet), Data: aws.String("HackerNewsLetter"), }, }, Source: aws.String(os.Getenv("SENDER")), } result, err := svc.SendEmail(input) if err != nil { if aerr, ok := err.(awserr.Error); ok { switch aerr.Code() { case ses.ErrCodeMessageRejected: fmt.Println(ses.ErrCodeMessageRejected, aerr.Error()) case ses.ErrCodeMailFromDomainNotVerifiedException: fmt.Println(ses.ErrCodeMailFromDomainNotVerifiedException, aerr.Error()) case ses.ErrCodeConfigurationSetDoesNotExistException: fmt.Println(ses.ErrCodeConfigurationSetDoesNotExistException, aerr.Error()) default: fmt.Println(aerr.Error()) } } else { fmt.Println(err.Error()) } return } fmt.Println("Email sent with messageId " + *result.MessageId) }