laravel框架发送邮件配置


本篇主要内容是laravel框架发送邮件的配置流程。

laravel提供了多种驱动来实现发送邮件功能,使用API方式的驱动相对来说更加高效,但是提供API服务的邮箱比较少,而且可能是收费的,所以还是使用SMTP协议驱动来配置。国内的大部分邮箱都支持smtp服务,以下配置流程以网易126邮箱为例。

1. 首先放通服务器端口

我最开始配置,感觉配置都没有问题,最后发现是因为服务器安全组没有打开。所以,在配置之前,建议检查一下服务器是否打开25或者465端口。 检查项目主要包括firewall和云服务商的安全组配置。

2. 在邮箱开启smtp服务

126邮箱在设置-POP3/SMTP/IMAP中,另外还需要在设置-客户端授权密码中设置授权码。

3. 打开laravel框架根目录下的.env文件,添加以下配置,内容请根据个人情况填写。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.126.com
MAIL_PORT=465
MAIL_USERNAME=zhangsan@126.com
MAIL_PASSWORD=zhangsanzhangsan
MAIL_FROM_ADDRESS=zhangsan@126.com
MAIL_FROM_NAME=zhangsan
MAIL_ENCRYPTION=ssl

需要注意的是MAIL_ENCRYPTION可以根据需要修改,但是如果不使用ssl,也需要修改MAIL_PORT为25端口。

4. 编写可邮寄类

4.1 可以通过以下命令来生成可邮寄类:

php artisan make:mail UserRegister

4.2 也可以直接在App\Mail中新建文件来创建邮寄类,邮寄类需要继承Illuminate\Mail\Mailable类。

4.3 通过build方法来设置邮件视图。

<?php

namespace App\Mail;

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

class UserRegister 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('mail.user.register');
    }
}

5. 编写视图文件

视图文件就是正常的blade模板,可以使用所有的blade模板功能。正常编写html即可。如果需要携带数据,可以在可邮寄类的build方法中使用with来传送要使用的数据到视图文件中。

6. 现在就已经可以发送邮件了,下面我们来测试一下发送邮件

首先我们创建一个测试路由,用来测试发送邮件,打开routes/web.php文件,添加以下内容。

Route::get('/test', function () {
    \Illuminate\Support\Facades\Mail::to('ianzhi@126.com')->send(new \App\Mail\UserRegister());
});

现在就可以通过访问/test来测试发送邮件了。

通过以上配置,我们就可以通过laravel框架发送邮件啦~