dansmaculotte / laravel-newsletter
在 Laravel 中管理新闻通讯
Requires
- php: ^8.1
- illuminate/support: ^9.0
Requires (Dev)
- drewm/mailchimp-api: ^2.4
- mailjet/mailjet-apiv3-php: ^1.4
- mockery/mockery: ^1.3
- orchestra/testbench: ^7.1
- phpunit/phpunit: ^8.5||^9.1
Suggests
- drewm/mailchimp-api: Required for using laravel-newsletter via Mailchimp
- mailjet/mailjet-apiv3-php: Required for using laravel-newsletter via Mailjet
README
此包是从 spatie/laravel-newsletter 分支出来的。它提供了一种简单的方法将不同的电子邮件服务与 Laravel 集成。
有 2 个可用的驱动程序
此外,还有一个 log
和 null
驱动程序用于测试和调试目的。
安装
您可以通过 composer 使用以下命令安装此包
composer require dansmaculotte/laravel-newsletter
包将自动注册自己。
要将配置文件发布到 config/newsletter.php
,请运行
php artisan vendor:publish --provider="DansMaCulotte\Newsletter\NewsletterServiceProvider"
这将在您的配置目录中发布一个 newsletter.php
文件。
最后,安装所需的电子邮件服务包
- Mailchimp
composer require drewm/mailchimp-api
- Mailjet
composer require mailjet/mailjet-apiv3-php
使用方法
在 config/newsletter.php
中配置您的邮件模板驱动程序和凭证。
在安装了包并填写了配置文件中的值后,使用此包将变得非常简单。以下所有示例都使用了外观。别忘了在文件顶部导入它。
use Newsletter;
订阅、更新和取消订阅
订阅电子邮件地址可以这样做
use Newsletter; Newsletter::subscribe('rincewind@discworld.com');
将电子邮件地址添加到列表中,但排除在营销电子邮件之外
use Newsletter; Newsletter::addMember('rincewind@discworld.com');
让我们取消某人的订阅
Newsletter::unsubscribe('the.luggage@discworld.com');
您可以将选项作为第二个参数传递
Newsletter::subscribe('rincewind@discworld.com', ['FNAME' => 'Rince', 'LNAME' => 'Wind']);
您可以通过第三个参数将某人订阅到特定列表
Newsletter::subscribe('rincewind@discworld.com', ['FNAME' => 'Rince', 'LNAME' => 'Wind'], 'subscribers');
第三个参数是在配置文件中配置的列表名称。
您还可以订阅和/或更新某人。如果此人已经订阅,则会订阅或更新。
Newsletter::subscribeOrUpdate('rincewind@discworld.com', ['FNAME' => 'Foo', 'lastname' => 'Bar']);
您还可以从特定列表中取消某人的订阅
Newsletter::unsubscribe('rincewind@discworld.com', 'subscribers');
删除订阅者
删除与取消订阅不同。与取消订阅不同,删除成员将导致丢失所有历史记录(添加/订阅/编辑)以及将其从列表中删除。在大多数情况下,您希望使用 unsubscribe
而不是 delete
。
这就是执行删除的方式
Newsletter::delete('rincewind@discworld.com');
获取订阅者信息
您可以通过使用 getMember
函数来获取关于订阅者的信息
Newsletter::getMember('lord.vetinari@discworld.com');
这将返回一个包含订阅者信息的数组。如果没有订阅该电子邮件地址的人,函数将返回 false
此外,还有一个方便的方法来检查某人是否已经订阅
Newsletter::hasMember('nanny.ogg@discworld.com'); //returns a boolean
此外,您还可以检查用户是否已订阅您的列表
Newsletter::isSubscribed('lord.vetinari@discworld.com'); //returns a boolean
处理错误
如果出现问题,您可以使用以下方式获取最后一个错误
Newsletter::getLastError();
需要其他功能?
如果您需要更多功能,请使用以下方式获取底层 API 的实例
$api = Newsletter::getApi();
Mailjet 注意事项
当使用 mailjet 时,可能会发生连接超时,如此处所述。您可以使用配置密钥 mailjet.connection_timeout
配置所需值,它本身可以使用环境变量 MJ_CONNECTION_TIMEOUT
。
测试
使用以下命令运行测试
vendor/bin/phpunit
更新日志
请参阅 CHANGELOG 获取有关最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 获取详细信息。
许可证
麻省理工学院许可证(MIT)。请参阅许可文件获取更多信息。