前回、AWSでのメール受信についてかいたので今回はメール送信に関して。
送信の場合、下記のような流れになります。
Contents
Route53でドメイン登録し、MXレコードを登録している場合
Route53の登録とMXレコードの登録に関しては、
を参考に。
SES画面から入り、以下のように設定。
「Create identity」を選択
「Domain」でRoute53で登録したドメインを入力し、「Create identity」を押下(他はディフォルトで問題ないかと思います。)
登録当初上記のようになりますが、数分後、
上記のように「Verified」になればOK。
これでとりあえずメール発行したい場合はこちらが最速かと思います。あとは「実際のメール送信」のところで書いたようにAWS SDKを読み込んでプログラム送信かAWS CLIのコマンドでメール送信が可能です。
既に存在しているメールアドレスを使う場合
基本のセッティング
- SES画面から入り、「Email Address」をクリック
- 「Verify a New Address」から持っているメールアドレスを入力
- 認証確認のメールがくるので送られてきたメールをクリック。
- Email Addressの画面で「Verification Status」がverifiedになっていればOK
- 「Send a Test Mail」でメール送信
参考URL
AWS SESでのメール送信環境を構築する(Amazon Simple Email Service)
サンドボックスの解除
上記までの流れだと登録したメールにしか送れないため、実際のメールとしては機能しません。
どうやらサンドボックスという状態らしくこれを解除する必要があるようです。
SESに入り、「Sending Statistics」という画面から入れば、
「Your Amazon SES account currently only has “sandbox” access」
というメッセージが画面上部に出ているかと思います。
このメッセージボックスの中の「Request Production Access」というところをクリックし、送信数と合わせて、AWSに申請手続きをする必要があります。(参考リンク参照)
参考URL
1日ぐらいで承認の返信がきますので、これでメール送信をすることができるようになります。
実際のメール送信
送信前にAWSのCLI環境を作っておきましょう。
SDK
node.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
const AWS = require('aws-sdk') AWS.config.update({ //バージニア北部 region:'us-east-1' }) let ses = new AWS.SES(); let params = { Destination: { ToAddresses:['送りたいメールアドレス'] }, Message: { Body:{ Text:{ Data: '本日は晴天なり', Charset: 'utf-8' } }, Subject:{ Data: 'サンプルタイトルです。', Charset: 'utf-8' } }, Source: '送り元のメールアドレス' }; ses.sendEmail(params, (err, data)=>{ if (err) console.log(err, err.stack) console.log(data) }) |
CLI
1 2 3 4 |
aws ses send-email --destination "ToAddresses=送信先メールアドレス" \ --message "Subject={Data=TEST,Charset=utf8},Body={Text={Data='ホゲホゲ',Charset=utf8}}" \ --source-arn (AWSのarn) \ --from "送信元メールアドレス" --region us-east-1 |
共に
1 2 3 |
{ "MessageId": "***************" } |
というメッセージが帰って来ればOKです。