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);
        }
  • 相关阅读:
    LAB8 android
    python3速查参考- python基础 1 -> python版本选择+第一个小程序
    selenium三种断言以及异常类型
    selenium+java:获取列表中的值
    selenium测试(Java)--元素操作(五)
    redhat网卡设置
    PYTHON TDD学习(一)-->Python 3.4版本环境安装Django及其启动
    渗透测试
    实用--功能测试方法与实际测试内容
    SQL常见面试题(学生表_课程表_总表)
  • 原文地址:https://www.cnblogs.com/polax/p/15091690.html
Copyright © 2011-2022 走看看