aws ses send-emailでメールを送る、--to/--subject/--textだけで足りるパターンとJSON必須なパターン

  • AWS
  • SES
  • CLI

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

AWS CLIからaws ses send-emailでメールを送る方法をまとめる。

Pattern 1: 簡易オプションで送る

宛先・件名・本文がシンプルなテキストだけなら、以下のオプションだけで送れる。

  • --from
  • --to
  • --cc
  • --bcc
  • --subject
  • --text
  • --html

コマンド

$ aws --region us-east-1 ses send-email --to to@example.com --from from@example.com --subject "Title." --text "Message body."

返り値

{
"MessageId": "01090177b45112da-2a7f375c-579c-49b7-8655-a90273fcfafd-000000"
}

注意点として、--subjectなどの引用符は半角の"を使うこと。全角の”を使うとパースでコケる。

Pattern 2: destination/messageをJSONで渡す

HTML本文とテキスト本文を両方指定したい場合や、CC/BCCを複数まとめて指定したい場合は、--destination/--messageをJSONで渡す方法の方が見通しがいい。

$ aws ses send-email --from from@example.com --destination file://destination.json --message file://message.json

destination.json

{
"ToAddresses": ["to@example.com"]
}

message.json

{
"Subject": {
"Data": "Title.",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "Message body.",
"Charset": "UTF-8"
}
}
}

sesv2との違い

aws sesv2 send-emailの方はこのショートハンドが存在しない。--contentにSimple/Raw/Templatedのいずれかを含むJSON構造を渡す形式のみで、--toや--subjectのような簡易フラグはない。SESのCLI周りを調べるときはv1とv2のどちらのコマンドか意識した方がいい。

サンドボックス状態のアカウントだと、送信先アドレスも検証済みである必要がある点は変わらず。