导航
导航
文章目录
  1. 一、安装方法
  2. 二、配置方法
  3. 三、基本使用
  4. 四、简单实例

阿里云邮件推送 Package

使用阿里云的邮件推送(DirectMail)发送邮件。

优点是非常简洁,没有引入阿里云全家桶,使用 laravel mailables 发送邮件。

邮件推送(DirectMail)是一款简单高效的电子邮件发送服务,它构建在可靠稳定的阿里云基础之上,帮助您快速、精准地实现事务邮件、通知邮件和批量邮件的发送。邮件推送历经两年双11考验,在发送速度、系统稳定性和到达率上表现优异;提供丰富的接口和灵活的使用方式,为企业和开发者解决邮件投递的难题,用户无需自建邮件服务器,开通服务即可享受阿里云优质的邮件服务,获得邮件投递的最佳实践。

DirectMail 官网: https://www.aliyun.com/product/directmail

一、安装方法

项目地址:

https://github.com/wangyan/directmail

在项目目录下执行

composer require wang_yan/directmail:dev-master

二、配置方法

修改 config/app.php,添加服务提供者

<?php
'providers' => [
   // 添加这行
    WangYan\DirectMail\DirectMailTransportProvider::class,
];

.env 中配置你的密钥, 并修改邮件驱动为 directmail

MAIL_DRIVER=directmail

DIRECT_MAIL_KEY=     # AccessKeyId
DIRECT_MAIL_SECRET=  # AccessSecret

三、基本使用

详细用法请参考 laravel 文档:

http://d.laravel-china.org/docs/5.4/mail

使用演示:

<?php
// routes\web.php
Route::get('/email', function(){
    $data = [
        'url'  => 'https://laravel.com',
        'name' => 'laravel'
    ];

    Mail::send('emails.register', $data, function ($message) {
        $message->from('us@example.com', 'Laravel');
        $message->to('foo@example.com');
        $message->subject('Hello World');
    });
});

编辑邮件模板

<?php
resources\views\emails\register.blade.php

四、简单实例

演示怎样发送注册验证邮件,首先初始化

php artisan make:auth
php artisan migrate

修改 RegisterController 控制器

<?php 
// app\Http\Controllers\Auth\RegisterController.php

    use Illuminate\Support\Facades\Mail;

    protected function create(array $data)
    {
        $user =  User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'confirmation_token' => str_random(40),
            'password' => bcrypt($data['password']),
        ]);

        $this->sendVerifyEmailTo($user);
        return $user;
    }

    private function sendVerifyEmailTo($user)
    {
        $data = [
            'name' => $user->name,
            'url'  => Route('email.verify',['token' => $user->confirmation_token])
        ];

        Mail::send('emails.register', $data, function ($message) use ($user) {
            $message->from('service@dm.mail.wangyan.org', env('APP_NAME','Laravel'));
            $message->to($user->email);
            $message->subject('请验证您的 Email 地址');
        });
    }

修改 User 模型

<?php 
// app\User.php
    protected $fillable = [
        'name', 'email', 'password','confirmation_token'
    ];

增加邮件模板

vim resources\views\emails\register.blade.php

增加路由

<?php
// routes\web.php
Route::get('/email/verify/{token}', 'EmailController@verify')->name('email.verify');

增加控制器

php artisan make:controller EmailController

编辑控制器

<?php
class EmailController extends Controller
{
    /**
     * @param $token
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    function verify($token)
    {
        $user = User::where('confirmation_token',$token)->first();

        if(is_null($user)){
            return redirect('/');
        }

        $user->is_active = 1;

        $user->confirmation_token= str_random(40);
        $user->save();

        return redirect('/home');
    }
}
支持一下
扫一扫,支持一下