Laravel学習記録 #025 メール送信について学ぶ
Laravelのメール送信について学習したものをまとめてます。
Laravelでのメール送信
標準でSMTPなどを介して電子メールを送信するためのドライバーが多数用意されている
config/mail.phpに設定がある
メールの内容や送信先などをカスタマイズするためにはMailableクラスを使う
メール送信はファサードを介して行う
試してみる
ローカルの確認のためmailtrapというサービスを使ってメールの確認をします。
.envファイル設定
メールの設定を定義します。
ここでの設定がconfig/mail.phpに読み込まれます。
mailtrapの場合はコピーして貼り付けます。
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=ユーザー名
MAIL_PASSWORD=パスワード
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
Mailableクラスを作成
続いてMail送信のためのMailableクラスを作成します。
php artisan make:mail SampleMail
作成された以下を編集します。
app/Mail/SampleMail.phpを編集
envelopeメソッド:メール送信者の設定
送信者と件名を指定できます。
fromにはAddressクラスをsubjectには件名の文字列を定義します。
public function envelope()
{
return new Envelope(
from: new Address('sample@example.com', '送信者'),
subject: 'Sample Mailableクラス設定の件名',
);
}
contentメソッド:メールのコンテンツ(本文)の設定
view(bladeテンプレート)を指定します。
※平文のテキストでも可能
public function content()
{
return new Content(
view: 'mail.sample',
);
}
あわせてビューを作成しておきます。
resources/views/mail/sample.blade.php
<p>Laravelからの送信です。</p>
<p>ビューで設定したテキストです。</p>
attachmentsメソッド:添付ファイル
AttachmentクラスのfromPathメソッドで添付のファイルを定義します。
今回はそのままで
Mailファサードで送信
作成したMailableクラスを使ってメールを送信してみます。
メール送信をするにはMailファサードを使用します。
コントローラー作成
app/Http/Controllers/MailController.php
indexは送信のためのページ
sendでMailファサードを使った送信をします。
Mail::to(送信先)->send(Mailableクラスインスタンス)とします。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\SampleMail;
class MailController extends Controller
{
public function index()
{
return view('mail');
}
public function send()
{
Mail::to('test@example.com')->send(new SampleMail());
return redirect('/mail');
}
}
ビューはボタンだけ作っておきます。
<form action="/mail/send" method="post">
@csrf
<input type="submit" value="メール送信">
</form>
ボタンを押して送信してみます。
こんな感じで送信できました。
こんな感じで簡単に送信可能です。
添付を含め踏み込んだ内容はまたいつかまとめようと思います。
この記事が気に入ったらサポートをしてみませんか?