
Laravelでメール送信のサンプルを作りたいんだけど、よく分からないから教えてほしいな。
具体的なソースコードもあると嬉しいかも。
こんな悩みを解決します。
- 本記事の内容
- Laravelでのメール送信プログラム作成方法
- メール送信の具体的なソースコード
- 本記事の執筆者


- 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
- 物販月利50万円⇒脱サラ
- 物販、システム開発、アフィリエイト、プログラミング、投資をやっています。
- 物販は彼女と楽しみながらやっています!
今回は、LaravelでMail送信のサンプルを作成してみます。



本記事を読めばLaravelでのメール送信が理解できるので、是非最後まで読んでみてください!
Mail送信サンプル作成の前に
今回は、実際のメール送信までは行いません。
メールサーバがないのと、メールドライバを「log」に設定するとメールの内容をログに出力してくれるので、ログを確認するだけで十分担保できます。
Mail送信サンプル作成手順
早速作成していきます。
まず、メールの設定ですが、基本的には「.env」と「config/mail.php」で設定されています。
.envの設定
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:O6KzNSTcrd9b/I1a0LTkOETCSXAW0oPGMsVJ8QlWJT4=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=test_db
DB_USERNAME=test_user
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=kohei.izumi@sample.com
MAIL_FROM_NAME=K.Izumi
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
「MAIL_FROM_ADDRESS」「MAIL_FROM_NAME」の設定を追記しました。
平文メールの作成
Laravelでは平文メールとHTMLメールの2種類を作成できますが、今回は平文メールを作成します。
メールが来たよーーー。
{{ $text }}
上記が平文メールの内容になります。
メールはbladeで作成するので、当然変数の展開も可能です。
クラスの作成
Laravelには「Mailable」クラスという、メールを扱うクラスがあります。
これもphp artisanコマンドで作成できるのでサクッと作っていきます。
php artisan make:mail SampleMail
上記で「SampleMail」というクラスを作成しました。
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class SampleMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('sample_mail')
->from(config('mail.from.address'))
->subject('メール')
->with([
'text' => 'ぽえぽえー',
]);
}
}
適当ですが、build関数内を少し修正しました。
コントローラの作成
本来ならロジックはサービスに記載したいのですが、説明の便宜上、コントローラにロジックを記載します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\SampleMail;
class MailController extends Controller
{
public function __construct() { }
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function store()
{
Mail::to('<あなたのTOアドレス>')->send( new SampleMail() );
}
}
ルーティングの設定
Route::resource('mail', 'MailController', ['only' => ['store']]);
POST時にコントーローラを呼ぶよう追記しました。
laradock@166d6d4773e7:/var/www$ php artisan route:list
+--------+----------+----------+------------+-------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+----------+------------+-------------------------------------------+------------+
| | GET|HEAD | / | | Closure | web |
| | POST | api/mail | mail.store | App\Http\Controllers\MailController@store | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\UserController@index | api |
+--------+----------+----------+------------+-------------------------------------------+------------+
ルーティングが追加されています。
メール送信の前に
ログに出力するよう設定を変更します。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:O6KzNSTcrd9b/I1a0LTkOETCSXAW0oPGMsVJ8QlWJT4=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=test_db
DB_USERNAME=test_user
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=kohei.izumi@sample.com
MAIL_FROM_NAME=K.Izumi
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
「MAIL_DRIVER」を「log」にすることで、ログにメールの内容が出力されます。
メール送信


上記のようにPOSTで送信すると200が返ってきました。
[2020-03-08 04:39:15] local.DEBUG: Message-ID: <d122227a234ec3002a03f65170e6eb85@localhost>
Date: Sun, 08 Mar 2020 04:39:13 +0000
Subject: =?utf-8?Q?=E3=83=A1=E3=83=BC=E3=83=AB?=
From: kohei.izumi@sample.com
To: <あなたのTOアドレス>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
メールが来たよーーー。
ぽえぽえー
ログにも正しく出力されていますね。
まとめ
今回は、LaravelでMail送信のサンプルを作成してみました。
ドライバを「log」にすると、ログにメールの内容が出力されるのが素敵ですね。
ではまた!
- おすすめ本はこちら!



僕は↑の本でLaravelの勉強をしました!
非常に分かりやすいのでおすすめです!
- 自由な生き方がしたいなら!
自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。
当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。
コメント