Laravel5.5配置email发送

本文共有2796个字。 # laravel/ a

laravel5.3后的mail发送使用的是Mailable。使用Mailable后使得邮件发送更加简单了。

1、Mailable的发送是基于 Guzzle HTTP的,所以首先需要安装一下

 composer require guzzlehttp/guzzle

2、配置email配置文件vim .env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null
#一下两行为新增
MAIL_FROM_ADDRESS= #发送邮箱
MAIL_FROM_NAME=   #发送人名称

3、生成 Mailable
在 Laravel 中,每种类型的邮件都代表一个「Mailable」对象。这些对象存储在 app/Mail 目录中。如果在你的应用中没有看见这个目录,别担心,在首次使用 make:mail 命令创建 Mailable 类时这个目录会被创建,例如:

php artisan make:mail OrderShipped

修改其中的view()方法里面的值

 public function build()
    {
        return $this->view('email.test');
    }
email.test为模板所在文件路劲

4、简单使用

public function email()
    {

        Mail::to('xxxxx@qq.com')->send(new \App\Mail\TestEmail());
    }
这样就可以发送邮件了。

不过我们在使用过程中不可能全是写死的模板,我们需要引入各种数据,所以接下来操作的就是传入视图数据

5、视图数据

  • 5.1 使用

    public function email()
    {
        $user = User::first();
    
        Mail::to($user->email)->send(new \App\Mail\TestEmail($user));
    }
    
  • 5.2 修改Mailable文件,打开刚才创建的文件:/app/email/OrderShipped.php

namespace App\Mail;

use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class OrderShipped extends Mailable
{
    use Queueable, SerializesModels;

    public $User;

    /**
     * Create a new message instance.
     * 这里通过依赖注入的方式传入数据,并将数据赋值给公共属性,这样就可以在模板文件中直接使用该属性
     * @return void
     */
    public function __construct(User $User)
    {
        $this->User = $User;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('email.test');
    }
}
  • 5.3 模板文件修改email/test.blade.php
  <!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>welcome to rookie</title>
</head>
<body>
<h1>Welcome to {{ $User->username }}</h1>
<p>This is Test Email send</p>
</body>
</html>
版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。本站微信公众号:7TEC,敬请关注!

暂时无法评论哦~

暂无评论