2017年1月20日金曜日

Laravel5.3でメール送信(Mail)

Laravel5.3メール送信(Mail)です。Gmailから送信してみました。送信処理が切り離されているので、システムデザイン的には良いのでしょうが、回りくどい(笑)。PHPの古き良き「気楽さ」的なものは無いですね。

.env(設定)
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=sampleuser@gmail.com
MAIL_PASSWORD=samplepassword
MAIL_ENCRYPTION=tls
コマンドで、Mailableクラスを作成
$ php artisan make:mail BlogPosted
/app/Mail/BlogPosted.php
use App\Blog;

class BlogPosted extends Mailable
{
  use Queueable, SerializesModels;

  public $blog;

  public function __construct(Blog $blog)
  {
    $this->blog = $blog;
  }

  public function build()
  {
    return $this->subject('ブログ記事です')
      ->view('emails.blog')
      ->text('emails.blog_plain');
  }
}
/resources/views/emails/blog.blade.php(HTMLメール)
<h1>{{ $blog->title }}</h1>
<br>
<p>{{ $blog->contents }}</p>
<br>
<p>{{ $blog->created_at }}</p>
/resources/views/emails/blog_plain.blade.php(テキストメール)
{{ $blog->title }}

{{ $blog->contents }}

{{ $blog->created_at }}
/app/Http/Controllers/BlogsController.php(コントローラーから送信)
use App\Blog;
use App\Mail\BlogPosted;
use Illuminate\Support\Facades\Mail;

    public function mail($id)
    {
        $blog = Blog::findOrFail($id) ;
        Mail::to("receiversample@example.com")->send(new BlogPosted($blog));
        return $blog;
    }

参考サイト
Mail(Laravel)
Laravel5.3でメール送信の実装(Laravel Roomさん)

0 件のコメント:

コメントを投稿