zoukankan      html  css  js  c++  java
  • Laravel 5.8 做个知乎 17 —— 重构邮件系统

    1 类

    1.1 appMailerMailer.php 基类

    <?php
    /**
     * Created by PhpStorm.
     * User: SUN
     * Date: 2021/8/2
     * Time: 18:23
     */
    namespace AppMailer;
    use NauxMailSendCloudTemplate;
    use IlluminateSupportFacadesMail;
    
    class Mailer
    {
        
        /**
         * @param       $template 邮件模板
         * @param       $email    邮件地址
         * @param array $data    传递参数
         */
       public function sendTo($template,$email, array $data)
       {
           //模板地址
           //https://www.sendcloud.net/email/#/sendAround/template
           $content = new SendCloudTemplate($template,$data);
           Mail::raw($content,function ($message) use ($email){
               $message->from(env('SEND_CLOUD_FROM'),'知乎管理员');
               $message->to($email);
           });
       }
    }
    View Code

    1.2 继承基类  appMailerUserMailer.php

    <?php
    /**
     * Created by PhpStorm.
     * User: SUN
     * Date: 2021/8/2
     * Time: 20:33
     */
    namespace  appMailer;
    use IlluminateSupportFacadesAuth;
    
    class UserMailer extends Mailer
    {
        public function followNotifyEmail($email)
        {
            $data = [
              'url' => url(config('app.url')),
              'name' => Auth::guard('api')->user()->name
            ];
            $this->sendTo('zhihu_app_new_user_follow',$email,$data);
        }
        
        public  function  passwordReset($email,$token)
        {
            $data = [
              'url'=>route('password.reset',['token'=>$token])
            ];
            $this->sendTo('zhihu_app_password_reset',$email,$data);
        }
        
        //https://www.sendcloud.net/email/#/sendAround/template
        public function welcome(User $user)
        {
            $data = [
              'url'=>route('email.verify',['token'=>$user->activation_token])
            ];
            $this->sendTo('test_template_active',$user->email,$data);
        }
    
    
    }
    View Code

    2 使用

    2.1 appNotificationsNewUserFollowNotinfication.php 用户关注发通知

        public function toSendcloud($notifiable)
        {
            //模板地址
            //https://www.sendcloud.net/email/#/sendAround/template
            /*$data = [
              'url' => url(config('app.url')),
              'name' => Auth::guard('api')->user()->name
            ];
            
            //test_template 邮件模板
            $template = new SendCloudTemplate('zhihu_app_new_user_follow',$data);
            Mail::raw($template,function ($message) use ($notifiable){
                $message->from(env('SEND_CLOUD_FROM'),'知乎管理员');
                $message->to($notifiable->email);
            });*/
            (new UserMailer())->sendTo($notifiable->email);
            
        }

    2.2 appHttpControllersAuthRegisterController.php用户注册发通知

        private function sendVerifyEmailTo($user)
        {
            (new UserMailer())->welcome( $user);
        }

    2.3  appUser.php 重置密码

        public function sendPasswordResetNotification($token)
        {
            (new UserMailer())->passwordReset($this->email,$token);
        }
  • 相关阅读:
    如何安装mysql
    07 登录接口开发
    06 跨域问题
    05 实体校验
    04 异常处理
    03 整合shiro+jwt 会话共享
    02 统一结果封装
    01 新建SpringBoot项目 整合Mybatis Plus(Spring Boot 前后端分离)
    结合Scikit-learn介绍几种常用的特征选择方法
    Set_ML
  • 原文地址:https://www.cnblogs.com/polax/p/15091690.html
Copyright © 2011-2022 走看看