laravel发送邮件配置

1.设置发送方,即邮件服务器,可以使用163邮箱,设置smtp,开启后获取授权码

 

2.在env文件配置

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com  //邮箱服务器
MAIL_PORT=25  //25端口
MAIL_USERNAME=130****@163.com  //你登录163的邮箱账号
MAIL_PASSWORD=  *****  //开启smtp的授权码
MAIL_ENCRYPTION=tls  //邮箱加密方式,25端口的为tls,其他的为ssl

3.在config下的mail文件中设置

'from' => [
        'address' => env('MAIL_FROM_ADDRESS', '你登录163的邮箱账号'),
        'name' => env('MAIL_FROM_NAME', '发件人名称'),
    ],
4.创建控制器,然后调用mail类进行发送
这里以生成pdf和发送pdf到邮箱为例
$data = ['name'=>'li','age'=>'12'];
$pdf = PDF::loadView('pdfTemplate.testPage',compact('data'))->setPaper('a4'); //pdfTemplate.testPage为views目录下的视图文件,compact('data')是传到pdf中的数据,
setPaper('a4')设置pdf的大小
//将pdf发送到1093684305@qq.com的邮箱
Mail::to('1093684305@qq.com')->send(new ReportPage($pdf,$user));
5.创建mail类
php artisan make:mail Test
class ReportPage extends Mailable
{
    use Queueable, SerializesModels;
    // protected $data;
    protected $pdf;  //传递过来的pdf原数据
    protected $data;  //pdf的变量数据
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($pdf,$data)
    {
        $this->data = $data;
        $this->pdf = $pdf;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {    //发送邮件视图testPage时,data数据也要传到视图中去,output()是pdf原数据,testPage.pdf发送到邮箱的pdf文件名字
        return $this->view('pdfTemplate.testPage',['data'=>$this->data])
                ->subject('testPage') //邮件主题,即收到邮件时邮件的名字
                ->attachData($this->pdf->output(), 'testPage.pdf', [
                    'mime' => 'application/pdf'
                ]);
    }
}

这样就可以发送邮件了,如果有报错的地方就自己排一下错,这里只是说一下发送邮箱的一些流程

 

posted @ 2020-08-27 17:52  小林不会飞  阅读(617)  评论(0编辑  收藏  举报