Laravel5发送邮件使用Service分开业务

参考地址:http://oomusou.io/laravel/laravel-service/

  1. 将外部行为注入到 service。
  2. 在 service 使用外部行为。
  3. 将 service 注入到 controller。

编写前的准备

主要有两个配置文件: config/mail.php .env ,其中 .env 覆盖 mail.php 里的值,因此配置 .env 里的内容就可以了:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qiye.163.com
MAIL_PORT=25
MAIL_USERNAME=账号
MAIL_PASSWORD=密码
MAIL_ENCRYPTION=null

照着上面这样配置。

编辑文件 app/Services/EmailService.php

  在 Laravel5 项目根目录下新建文件夹 Services ,我们的 EmailService.php 就放在这个文件夹下。

namespace App\Services;

use Illuminate\Mail\Mailer;
use Illuminate\Mail\Message;

class EmailService
{
    /** @var Mailer */
    private $mail;

    /**
     * EmailService constructor.
     * @param Mailer $mail
     */
    public function __construct(Mailer $mail)
    {
        $this->mail = $mail;
    }

    /**
     * 发送Email
     * @param array $request
     */
    public function send(array $request)
    {
        $this->mail->queue('email.index', $request, function (Message $message) {
            $message->sender(env('MAIL_USERNAME'));
            $message->subject(env('MAIL_SUBJECT'));
            $message->to(env('MAIL_TO_ADDR'));
        });
    }
}
  1. Mailer 类注入到 EmailService
  2. 将发送 Email 的业务逻辑写在 send() 。不是使用 Mail facade ,而是使用注入的 $this->mail

编辑文件 app/Http/Controllers/UserController.php

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use App\Services\EmailService;

class UserController extends Controller
{
    /** @var EmailService */
    protected $emailService;

    /**
     * UserController constructor.
     * @param EmailService $emailService
     */
    public function __construct(EmailService $emailService)
    {
        $this->emailService = $emailService;
    }

    /**
     * Store a newly created resource in storage.
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->emailService->send($request->all());
    }
}
  1. 将依赖的 EmailService 注入到 UserController
  2. 从原本直接依赖 Mail facade,改成依赖注入的 EmailService
Copyright © http://blog.webfsd.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2019-05-21 04:55:26

results matching ""

    No results matching ""