言語
- Laravel8
Illuminateとは
- Laravelが提供する様々なサービスやコンポーネントを構成するための基盤を提供している。
- サービスやコンポーネントは
Illuminate
名前空間内に整理されている
どこにあるか?
プロジェクトディレクトリ\vendor\laravel\Framework\src\Illuminate\~
Illuminate\Mail
- メール送信機能を提供するクラスがある。
to($users)
- メールの送信先アドレスを設定
Mail::to('example@example.com')->send(new ExampleMail());
cc($users)
- メールのCC(カーボンコピー)祖往診先アドレスを設定
Mail::to('example@example.com')->cc('cc@example.com')->send(new ExampleMail());
bcc($users)
- メールのBCC(ブラインドカーボンコピー)送信先アドレスを設定
Mail::to('example@example.com')->bcc('bcc@example.com')->send(new WelcomeMail());
send($view, array $data = [], $callback = null)
- メールを送信
Mail::send('emails.test', ['name' => 'qiita'], function ($message) { $message->to('example@example.com')->subject('Hello'); });
queue($view, array $data = [], $callback = null)
- メールをキューに追加して非同期で送信
Mail::queue('emails.welcome', ['name' => 'qiita'], function ($message) { $message->to('example@example.com')->subject('Hello'); });
later($delay, $view, array $data = [], $callback = null)
- 指定した遅延時間後にメールをキューに追加して送信
Mail::later(now()->addMinutes(10), 'emails.test', ['name' => 'qiita'], function ($message) { $message->to('example@example.com')->subject('Hello'); });
raw($text, $callback)
- プレーンテキストのメールを送信
Mail::raw('This is a plain text email', function ($message) { $message->to('example@example.com')->subject('Plain Text Email'); });
html($html, $callback)
- HTML形式のメールを送信
Mail::html('<h1>HTML Email</h1>', function ($message) { $message->to('example@example.com')->subject('HTML Email'); });
使用例
コントローラー
use Illuminate\Support\Facades\Mail;
use App\Models\User;
use App\Mail\WelcomeMail;
class UserController extends Controller
{
public function sendWelcomeEmail()
{
$user = User::find(1);
Mail::to($user->email)->send(new WelcomeMail($user));
}
}
app\Mail\WelcomeMail.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class WelcomeMail extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
public function build()
{
return $this->view('emails.welcome')->with(['user' => $this->user]);
}
}
resource\views\emails\welcome.blade.php
<body>
<h1>Hello</h1>
<p>Welcome to our platform!</p>
</body>
私のIlluminate関連記事