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);
        }
  • 相关阅读:
    GridView 应用貌似是个mm写的,值得尊敬!
    .net 时间函数
    .net 获取url的方法
    SaveGraphics
    asp网站页面上都是问号
    由于编码方式导致CSS样式表失效
    .net url乱码
    常用正则表达式
    解决realse版在加载toolbar后不正常退出的现象
    general error c1010070: Failed to load and parse the manifest
  • 原文地址:https://www.cnblogs.com/polax/p/15091690.html
Copyright © 2011-2022 走看看