GolangでAWS SES

f:id:pigggg:20210329045325p:plain

AWS SES

AWS側の設定また別途

code

import (
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/awserr"
    "github.com/aws/aws-sdk-go/service/ses"
)  

const (
    charSet = "UTF-8"
)

func main() {
    // BCC setting
    bccEmailAddress := []*string{"bcc@piggggggggggggg.com"}

    input := &ses.SendEmailInput{
        // 送り先設定
        Destination: &ses.Destination{
            ToAddresses: []*string{
                aws.String("to@piggggggggggggg.com"),
            },
            BccAddresses: bccEmailAddress,
        },
        // メッセージ内容設定
        Message: &ses.Message{
            // タイトル設定
            Subject: &ses.Content{
                Charset: aws.String(charSet),
                Data:    aws.String("タイトル"),
            },
            // メール内容Text / html
            Body: &ses.Body{
                Html: &ses.Content{
                    Charset: aws.String(charSet),
                    Data:    aws.String("htmlメール内容"),
                },
                Text: &ses.Content{
                    Charset: aws.String(charSet),
                    Data:    aws.String(テキストメール内容),
                },
            },
        },
        // 送り元設定
        Source: aws.String("from@piggggggggggggg.com"),
    }

    // エラー
    if _, err := s.sesClient.Ses.SendEmail(input); err != nil {
        if awsErr, ok := err.(awserr.Error); ok {
            switch awsErr.Code() {
            case ses.ErrCodeMessageRejected:
                panic("メッセージが却下されました")
            case ses.ErrCodeMailFromDomainNotVerifiedException:
                panic("送り元のドメインが不正です")
            case ses.ErrCodeConfigurationSetDoesNotExistException:
                panic("設定セットが不正です")
            default:
                panic(awsErr)
            }
        }
        panic(err)
    }
    return nil
}