LoginSignup
11
11

More than 5 years have passed since last update.

SESの設定方法

Posted at

目的

AWSのSESを使ってメールを送信します。

手順

プロダクションアクセスを申請

AWS Management ConsoleでSESのページにアクセスするとプロダクションアクセスについてメッセージが表示されてました。「Request Production Access」というボタンを押すと申請フォームが表示されるので利用する目的などを書き申請しましょう。

image

ドメインを認証する

メールの送信元のアドレスやドメインを認証できるようです。

image

今回はドメインの認証を行いました。「Verify New Domain」ボタンを押すと下記のような画面があり、自前のドメインにTXTレコードをこの内容で作ることでドメインの所持を証明してみせろという話です。

image

Route53で運営していたので、下記のように書き換えました(ほとんどモザイクだらけですが)。ちなみにTXTレコードの値はダブルコーテーションで囲ってないとエラーになるはずです。

image

ちなみにEmailAddressの認証のほうがラクです。メールアドレスを入れて送信し、受信したら本文のリンクを踏むだけ。メールアドレスの数があまりないようで増えることもないのであればこちらのほうがよいですね。この検証が通るとverifiedにステータスが変わります。

クレデンシャルを作成

DashboardのところにSMTPの設定などが書いてあります。そしてメールを送信するにはクレデンシャルが必要なのでこれを作ります。

image

ユーザ名とパスワードはなくさないようにしましょう。

image

メールを送信してみる(CakePHP2)

こんな感じで送信できました。プロダクションアクセスが可能になるまでverifiedになっているメールアドレスにしかメールできないようです。

Config/email.php
    public $admin = array(
            'transport' => 'Smtp',
            'from' => 'admin@example.com',
            'host' => 'email-smtp.us-west-2.amazonaws.com',
            'port' => 587,
            'username' => SMTP_USER,
            'password' => SMTP_PASSWORD,
            'tls' => true
    );
View/Emails/text/sample.ctp
<?php

登録ありがとうございます
<?php echo $content; ?>

sample.ctp
            App::uses('CakeEmail', 'Network/Email');
            $email = new CakeEmail('admin');

            $email->to('takayukii@example.com');
            $email->subject('登録完了のお知らせ');
            $email->template('sample');
            $email->emailFormat('text');
            $email->viewVars(array('content' => 'hogehoge'));

            if ($email->send()) {
                $this->log('メール送信に成功しました', LOG_DEBUG);
            }else{
                $this->log('メール送信に失敗しました');
            }
11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11