欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Laravel 5.4 整合SendCloud邮件服务

程序员文章站 2022-07-08 11:10:43
...

SendCloud是一个比较适合国内的Mail服务商
也很适合新手测试开发,这里推荐给学习Laravel的同学使用
同时github上还有一个整合SendCloud的包Laravel-SendCloud ,后面我们也将使用到

Step1

注册并配置Sendcloud API_KEY API_USER
如果是测试用户,每天都提供免费的邮件请求次数

下面需要在邮件模板中 添加我们的模板邮件 格式如下:
%name%是我们传给邮件的参数,会自动解析
Laravel 5.4 整合SendCloud邮件服务

Step2

回到我们的Laravel框架
首先执行composer命令安装laravel-sendcloud

composer require naux/sendcloud

config/app.phpprovider中添加我们的服务提供者

'providers' => [
   // 添加这行
    Naux\Mail\SendCloudServiceProvider::class,
];

然后在.env文件中 配置Sendcloud相关信息

MAIL_DRIVER=sendcloud
//以下需要自行添加
SEND_CLOUD_USER=       #Step1中获取的API_USER
SEND_CLOUD_KEY=        #Step1中获取的API_KEY

使用artisan命令 生成注册登录模块

php artisan make:auth

下面使用artisan命令创建用户数基表

php artisan migrate

Laravel中默认的用户注册中有Email这个字段,所以就不增加修改了

以上我们的配置环节就结束了

Step3

下面来到代码阶段
首先进入到App/Http/Controller/Auth/RegisterController.php
修改create方法将用户信息传递给sendVerifyEmailTo()方法

protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
        $this->sendVerifyEmailTo($user);
        return $user;
    }


这里就到了我们最关键的部分
register即Sendcloud中邮件模板调用名称
aaa@qq.com为我们默认的发送邮件账户
Laravel即为发送邮件标题
这里特别需要注意的是我们的命名空间,在phpstorm中拷贝过来还需要重新敲一次
Mail这里使用到的命名空间是use Illuminate\Support\Facades\Mail;

private function sendVerifyEmailTo($user){
        $data = [
            'name' => $user->name,
        ];
        $template = new SendCloudTemplate('register', $data);

        Mail::raw($template, function ($message) use($user) {
            $message->from('aaa@qq.com', 'Laravel');
            $message->to($user->email);
        });
    }

Step4

下面我们只需要在Laravel默认的注册界面中注册新用户
Laravel 5.4 整合SendCloud邮件服务

当然,邮箱必须是真实可接收到的邮箱
然后在我们的邮箱中就应该可以看到我们从Laravel发送的邮件了

SendCloud中也会显示邮件的发送状况
Laravel 5.4 整合SendCloud邮件服务

如果需要验证token的话,只需要在用户表中添加token和is_active字段,在传到邮件模板中添加回调验证url参数,再添加一个验证token的Controller即可

如果有什么疑惑或者问题可以在评论中回复

相关标签: 邮件