laravel12.laravel_102
R e i - D r e a m
for Laravel
TOP > Laravel Ver.12 > その他中間モジュール(メール送信)
Guest
login

最終投稿日:2026年3月15日

メール送信設定
メール設定
設定は環境設定ファイル(.env)となります。
サンプルとして「YahooMail」を使っていきます。
.env

MAIL_MAILER=log
MAIL_SCHEME=null
MAIL_HOST=smtp.mail.yahoo.co.jp
MAIL_PORT=465
MAIL_USERNAME={ユーザー名}
MAIL_PASSWORD={パスワード}
MAIL_FROM_ADDRESS={自身のメールアドレス}
MAIL_FROM_NAME={任意の名前}
MAIL_ENCRYPTION=ssl

Mailクラスを生成する
「Laravel」ルートディレクトリ([artisan]ファイルがある場所)から以下を叩きます。
[artisan]を叩く

C:\~\laravel_12>php artisan make:mail SampleMail
    INFO Mailable [C:\~\laravel_12\app\Mail\SampleMail.php] created successfully.

C:\~\laravel_12>

ファイル「~\app\Mail\SampleMail.php」が作成されます。
作成されたファイルの内以下5箇所を修正します。
SampleMail.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 SampleMail extends Mailable {
    use Queueable, SerializesModels;
    public $content;
    public function __construct() {
    public function __construct($content) {
        $this->content = $content;
    }
    public function envelope(): Envelope {
        return new Envelope(
            subject: 'Sample Mail',
        );
    }
    public function content(): Content {
        return new Content(
            view: 'view.name',
            view: 'mail.hoge',
            with: ['content' => $this->content]
        );
    }
    public function attachments(): array {
        return [];
    }
}

これでコントローラから、SampleMailクラスを初期化する際に変数「$content」を渡せる様になります。
次にビューに『mail.hoge』と設定したので『~\resources\views\mail\hoge.blade.php』を作成します。
hoge.blade.php

{{ $content['mailTo'] }} さんへ
クリックしてね。
URL:{{ $content['url'] }}

まぁ適当で良いです。。w
次に実際にメール送信するロジックを任意のコントローラに作成します。
任意のコントローラ

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;

use Illuminate\Support\Facades\Mail;
use App\Mail\SampleMail;
class HogeController extends Controller {
    public function index(Request $request) {

        $content = [
            'mailTo' => '[email protected]',
            'url' => 'http://localhost/laravel_12/hoge'
        ];
        Mail::to('[email protected]')->send(new SampleMail($content));
        return view('hoge/index', []);
    }
}

ビュー側に渡したい値を連想配列で作成します。
『Mail::to』メソッドの第一引数に宛先のメールアドレスを設定します。
続いてメソッドチェーンで先ほど作成したメールクラス(SampleMail)へ「$content」を引数で初期化します。
ビュー側では「mailTo」「url」の値を参照できる様になります。
それでは実行しちゃいましょう。
大丈夫です。まだメールは飛びませんよ。
メール確認
ログ『~\storage\logs\laravel.log』を見てみましょう。
恐らく以下の内容となっていると思います。
[email protected] さんへ
クリックしてね。
URL:http://localhost/laravel_12/hoge
環境設定ファイルで『MAIL_MAILER=log』と設定しました。
これは実際にはメールは送信せずに、ログに出力する設定となります。
実際にメールを送信するには「MAIL_MAILER=smtp」としてください。
ポイント

メールが送信できない場合は以下を確認ください。
● [.env]
「MAIL_FROM_ADDRESS」に設定するメールアドレスは実際のメールアドレスにする。
● メールサーバ側の設定を確認する
昨今はセキュリティの観点からアプリ経由で送信する場合の設定をする必要があります。
[yahoo]メールの場合はは、設定「IMAP/POP/SMTPアクセス」から、「Yahoo! JAPAN公式サービス以外からのアクセス = 許可」にする必要があります。

レンズモード 【新規購入限定用】
ログインしてコメントを残そう!!


きっぷる