3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWSのSESを使ってCakePHP4からメールを送信するための設定方法

Last updated at Posted at 2021-05-17

本文について

自分でやっているサイトにSESを導入して新規登録ユーザーにメールが届くシステムの導入をするため、行ったAWSのSESの設定方法を記載しておきます。(備忘録程度に)

CakePHP4での設定になりますが、ruby on rails側でもrailsガイドのここら辺を参考に設定をすればおそらくメールの設定ができるはずなので、ポートフォリオ作成の参考になるかと思います。

また、さくらインターネットのサーバーでAWSのSESの設定方法でAWSとドメインの設定方法を記載しておりますので、もし、AWSとドメインの設定が終わっていない場合は、、前回の記事を参照ください。

AWSの設定

「Create My SMTP Credentials」をクリックして、メール送信するアカウントの作成
スクリーンショット 2021-05-18 1.16.07.png

IAM User Name:の中にわかりやすいユーザー名を記載し、右下の「作成」をクリック

スクリーンショット 2021-05-18 1.17.57.png

作成が完了すると下記の画面になるので「認証情報のダウンロード」をクリック
スクリーンショット 2021-05-18 1.19.05.png

「SMTP ユーザー名」と「SMTP パスワード」が表示されるのでこれをメモすれば、AWSの設定は完了

CakePHPでの設定

app.php(app_local.phpがあればapp_local.phpに記入)のEmailTransportEmailの設定を行う

EmailTransportには、登録したサーバー(AWSのSES)の設定を記入
Emailには送信する内容のデフォルトの設定(送信するメールアドレスとか)

Config/app.php

   'EmailTransport' => [
        'default' => [
            'className' => 'Smtp',
            'host' => 'email-smtp.ap-northeast-1.amazonaws.com',
            'port' => 587,  //25にする場合は別途設定が必要っぽい
            'timeout' => 10,
            'username' => 'awsで表示されたusername',
            'password' => 'awsで表示されたpassword',
            'client' => null,
            'tls' => true,
            'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
        ],

    ],

    'Email' => [
        'default' => [
            //EmailTransportのdefaultの読み込み
            'transport' => 'default',
            //ここに送信で使用するメールアドレスを記載する
            'from' => 'test@exsample.com',
            'charset' => 'utf-8',
            'headerCharset' => 'utf-8',
        ],
    ],

メール送信テスト

テスト用にCommandに簡単なメール送信の記述

Command/MailCommand.php
<?php
namespace App\Command;

use Cake\Console\Arguments;
use Cake\Console\Command;
use Cake\Console\ConsoleIo;
use Cake\Console\ConsoleOptionParser;
//メーラーを使うために記述をたす
use Cake\Mailer\Mailer;

class MailCommand extends Command{

    public function initialize(): void{
        parent::initialize();
    }

    public function execute(Arguments $args, ConsoleIo $io){
        //Emailの設定を読み込ます
        $mailer = new Mailer('default');
        $mailer
            ->setTo('exsample@gmail.com') //送信先
            ->setSubject('About')         //タイトル
            ->deliver('メッセージテスト');     //本文かつ送信
    }
}

上記の設定後、下記のコマンドをターミナルで打てばsetToで記載されているメールアドレスにメールが飛ぶようになります。

$ bin/cake mail
3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?