本文について
自分でやっているサイトにSESを導入して新規登録ユーザーにメールが届くシステムの導入をするため、行ったAWSのSESの設定方法を記載しておきます。(備忘録程度に)
CakePHP4での設定になりますが、ruby on rails側でもrailsガイドのここら辺を参考に設定をすればおそらくメールの設定ができるはずなので、ポートフォリオ作成の参考になるかと思います。
また、さくらインターネットのサーバーでAWSのSESの設定方法でAWSとドメインの設定方法を記載しておりますので、もし、AWSとドメインの設定が終わっていない場合は、、前回の記事を参照ください。
AWSの設定
「Create My SMTP Credentials」をクリックして、メール送信するアカウントの作成
IAM User Name:の中にわかりやすいユーザー名を記載し、右下の「作成」をクリック
作成が完了すると下記の画面になるので「認証情報のダウンロード」をクリック
「SMTP ユーザー名」と「SMTP パスワード」が表示されるのでこれをメモすれば、AWSの設定は完了
CakePHPでの設定
app.php(app_local.phpがあればapp_local.phpに記入)のEmailTransport
とEmail
の設定を行う
EmailTransport
には、登録したサーバー(AWSのSES)の設定を記入
Email
には送信する内容のデフォルトの設定(送信するメールアドレスとか)
'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に簡単なメール送信の記述
<?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