環境
・Laravel10
・Windows11
ドキュメント
SES準備
SESを利用するため、IDを作成。
※今回はメールアドレス使用。
SESドライバのインストール
SESドライバを使用するために、Amazon AWS SDK for PHPをインストール。
composer require aws/aws-sdk-php
環境設定
.env
MAIL_MAILER=ses
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="送信元のメールアドレス"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=アクセスキー
AWS_SECRET_ACCESS_KEY=シークレットアクセスキー
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
Mailable作成
メール送信機能を簡単に実装するためのMailable
クラスを生成。
php artisan make:mail MailTest
app/Mail
配下にファイルが生成される。
実装
MailTest.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class MailableObject extends Mailable
{
private $email;
/**
* Create a new message instance.
*/
public function __construct($email)
{
// コントローラーやバッジから受け取る値
$this->email = $email;
}
/**
* Build the message.
*
* @return $this
*/
public function envelope(): Envelope
{
return new Envelope(
to: $email,
subject: 'メール送信テスト'
);
}
public function content()
{
return new Content(
// メール文のテンプレで使うviewファイル
markdown: 'emails.test_content'
);
}
}
view作成
Mailableで指定したemails.test_content
を作成。
※今回はマークダウン形式
emails/test_content.PHP
# Test email
### Thank you very much for visiting our office yesterday.
メール送信処理
コントローラーやバッジに記述。
※今回はリスナに記述。
これでMailableObject
が呼び出され、メールが送信される
Mail::to('送信先メールアドレス')->send(new MailableObject('Mailableのコンストラクタに渡す値'));
参考記事