定制 crystoline/laravel-custom-mail-provider 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

crystoline/laravel-custom-mail-provider

Composer 安装命令:

composer require crystoline/laravel-custom-mail-provider

包简介

Send email via custom email provider

README 文档

README

Send email via custom email transport channel

Installation

composer require crystoline/laravel-custom-mail-provider

Configuration

Env

Change MAIL_DRIVER to 'custom-mailer'

MAIL_MAILER=custom-mailer

Add the following to config/mail.php

<?php

return [
    'default' => env('MAIL_MAILER', 'smtp'),
    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port' => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'auth_mode' => null,
        ],
        #### Add this
        'custom-mailer' => [
            'transport' => 'crystoline'
        ]
        
        ####

        
    ],

    

];

Mail Transport

Create you custom mail transport by extending "Illuminate\Mail\Transport\Transport"

use Illuminate\Mail\Transport\Transport;

class MyMailTransport extends Transport
{

    public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null)
    {

        $url = 'https://my.custome.email.service';

        $data = [

            "toAddress" => implode(',', array_keys($message->getTo())),
            "subject" => $message->getSubject(),
            "body" => $message->getBody()
        ];
       #Send mail logic here :)

    }
}

Resolver

Create a MailTransportResolver by implementing "Crystoline\CustomMailProvider\Interfaces\ICustomMailerResolver"

namespace App\Resolvers;

use App\Services\MyCustomMailTransport;
use Crystoline\CustomMailProvider\Interfaces\ICustomMailerResolver;

class MyMailTransportResolver implements ICustomMailerResolver
{

    function resolve(): \Illuminate\Mail\Transport\Transport
    {
        return new MyCustomMailTransport();
        #   You can have multiple mail transport here
        #   swich(condition){
        #   case A: return new MyCustomMailTransport1();
        #   case B: return new MyCustomMailTransport2();
        #   case C:
        #   default:
        #      return new MyCustomMailTransport3();
        #   }
    }
}

Register Your MailTransportResolver in AppServiceProvider

namespace App\Providers;

use App\Resolvers\MyMailTransportResolver;
use Crystoline\CustomMailProvider\Interfaces\ICustomMailerResolver;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
	    
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(ICustomMailerResolver::class, MyMailTransportResolver::class );
    }
}

You can start sending email now ;}

统计信息

  • 总下载量: 15
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-09-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固