AWS SES SDK send email with attachments


I’m using the official AWS Golang SDK to integrate with SES but can’t find any information about how to add some attachments (pdf file represented as []byte in code) to the email.

Could you help me?

The current email sending code looks like this:

sesEmailInput := &ses.SendEmailInput{
    Destination: &ses.Destination{
        ToAddresses: []*string{aws.String("To address")},
    Message: &ses.Message{
        Subject: &ses.Content{
            Data: aws.String("Some text"),
        Body: &ses.Body{
            Html: &ses.Content{
                Data: aws.String("Some Text"),
    Source: aws.String("From address"),
    ReplyToAddresses: []*string{
        aws.String("From address"),
if _, err := s.sesSession.SendEmail(sesEmailInput); err != nil {
    return err


To send attachments, use the SendRawEmail API instead of SendEmail. AWS documentation will generally refer to this as constructing a ‘raw message’ instead of explicitly calling out how to send attachments.


From the AWS SDK for Go API Reference, linked below:

params := &ses.SendRawEmailInput{
    RawMessage: &ses.RawMessage{ // Required
        Data: []byte("PAYLOAD"), // Required
    ConfigurationSetName: aws.String("ConfigurationSetName"),
    Destinations: []*string{
        aws.String("Address"), // Required
        // More values...
    FromArn:       aws.String("AmazonResourceName"),
    ReturnPathArn: aws.String("AmazonResourceName"),
    Source:        aws.String("Address"),
    SourceArn:     aws.String("AmazonResourceName"),
    Tags: []*ses.MessageTag{
        { // Required
            Name:  aws.String("MessageTagName"),  // Required
            Value: aws.String("MessageTagValue"), // Required
        // More values...
resp, err := svc.SendRawEmail(params)

Further Reading

Answered By – Anthony Neace

Answer Checked By – Mildred Charles (GoLangFix Admin)

Leave a Reply

Your email address will not be published.