hashemi/too-mailable

一个基于Laravel的包,用于在运行时更改`Mail`传输和其凭证。此包将提供一个简单易用的`Mailable`抽象层。目前此包仅支持SMTP。

dev-main 2022-11-02 07:16 UTC

This package is auto-updated.

Last update: 2024-09-30 01:30:33 UTC


README

一个基于Laravel的包,用于在运行时更改Mail传输和其凭证。此包将提供一个简单易用的Mailable抽象层。目前此包仅支持SMTP。

安装

您可以从composer开始使用它。进入您的终端,从项目根目录运行此命令。

composer require hashemi/laravel-too-mailable
  • 如果您正在使用Laravel,则Laravel将自动发现此包。如果它没有发现包,请在config/app.phpproviders数组中添加以下提供者。
Hashemi\TooMailable\TooMailableServiceProvider::class

用法

此包将提供TooMailable抽象类,您需要使用您的邮件类。此抽象类有两个抽象方法。

  • transport(): string|EsmtpTransport 此方法将返回由字符串或继承自EsmtpTransport的定制传输类支持的传输。

  • credentials(): array 此方法将返回当前传输的必要凭证。

示例

use Hashemi\TooMailable\TooMailable;

class SendVerificatioMail extends TooMailable
{
    //... 

    public function transport()
    {
        return 'amazon';
    }

    public function credentials()
    {
        return [
            'username' => 'my-user',
            'password' => 'password-123',
            'region' => 'us-east-2'
        ];
    }
}

此包还包含一个配置,其中每个内置传输类都已配置。如果有人需要覆盖该传输,他们可以通过从供应商发布配置来轻松完成,配置文件将存储在您的应用程序中的config/too-mailable.php

示例

use Hashemi\TooMailable\Transports\{
    Amazon, Google, Mailchimp, Mailgun, Mailjet, 
    OhMySmtp, Postmark, Sendgrid, SendInBlue
};

return [
    'transports' => [
        'amazon' => Amazon::class,
        'google' => Google::class,
        'mailchimp' => Mailchimp::class,
        'mailgun' => Mailgun::class,
        'mailjet' => Mailjet::class,
        'postmark' => Postmark::class,
        'sendgrid' => Sendgrid::class,
        'sendinblue' => SendInBlue::class,
        'oh-my-smtp' => OhMySmtp::class,
    ],
];

因此,如果您想更改现有传输,则

return [
    'transports' => [
        //...
        'amazon' => MyNewAmazonTransport::class,
    ],
];

或者,如果您想添加新传输,则

return [
    'transports' => [
        //...
        'converkit' => MyNewConvertKit::class
    ],
];

MyNewConvertKit类应实现Hashemi\TooMailable\Interfaces\TransportInterface接口。凭证将通过MyNewConvertKit类的构造函数传递。

贡献

欢迎提交拉取请求。对于任何更改,请首先打开一个问题来讨论您想要更改的内容。