使用 Laravel 管理新闻通讯 - 功能强大的邮件订阅工具
在 Laravel 中轻松管理你的邮件列表
这个 Laravel 包提供了一种简单的方法,让你能方便地整合到各种邮件服务的电子邮件订阅列表中。
目前支持的服务包括:
支持我们
我们在创建一流的开源软件包上投入了大量的资源。你可以通过购买我们的付费产品来支持我们。
我们非常感谢你从你的家乡寄给我们一张明信片,告诉我们你正在使用我们哪款包。你可以在我们的联系方式页面找到我们的地址(spatie.be/about-us)。所有收到的明信片都将展示在我们的虚拟明信片墙上(spatie.be/open-source/postcards)。
安装
可以通过 Composer 来安装这个包:
composer require spatie/laravel-newsletter
为了发布配置文件到 config/newsletter.php
,运行:
php artisan vendor:publish --tag="newsletter-config"
这将发布一个名为 newsletter.php
的配置文件到你的配置目录。
使用 Mailcoach
要让这个包与 Mailcoach 配合工作,你需要安装 Mailcoach SDK。
composer require spatie/mailcoach-sdk-php
然后,在配置文件中提供 API 密钥、终点等参数。在 Mailcoach 设置界面中可以找到这些值。对于 list.subscribers.id
,它应该是邮件列表的 UUID,你可以在 Mailcoach 的邮件列表设置屏幕中找到。
使用 MailChimp
若要使用 MailChimp,请安装以下额外的包:
composer require drewm/mailchimp-api
在 newsletter
配置文件的 driver
键应设置为 Spatie\Newsletter\Drivers\MailChimpDriver::class
。
接下来,你需要在配置文件中提供 API 密钥和 list.subscribers.id
的值。这些值可在 MailChimp 用户界面中找到。
endpoint
配置值应设置为 null。
如何使用
安装了该包并填写了配置文件中的值后,使用起来就非常简单了。以下示例都使用了门面,别忘了在文件顶部导入。
use Spatie\Newsletter\Facades\Newsletter;
订阅、更新和退订
订阅邮箱就像这样:
Newsletter::subscribe('rincewind@discworld.com');
要退订某人:
Newsletter::unsubscribe('the.luggage@discworld.com');
对于 Mailcoach,可以作为第二个参数传递额外属性:
Newsletter::subscribe('rincewind@discworld.com', ['first_name' => 'Rince', 'last_name' => 'Wind']);
对于 MailChimp,可以作为第二个参数传递合并变量:
Newsletter::subscribe('rincewind@discworld.com', ['FNAME'=>'Rince', 'LNAME'=>'Wind']);
你可以通过指定列表名将某人订阅到特定列表:
Newsletter::subscribe('rincewind@discworld.com', listName: 'subscribers');
第三个参数是你在配置文件中配置的列表名称。
也可以同时订阅或更新某人。如果他们已经订阅,那么他们会订阅或更新:
Newsletter::subscribeOrUpdate('rincewind@discworld.com', ['first_name' => 'Rince', 'last_name' => 'Wind']);
对于 MailChimp,你可以通过第四个参数将某人订阅到一个或多个特定的组/兴趣:
Newsletter::subscribeOrUpdate(
'rincewind@dscworld.com',
['FNAME'=>'Rince','LNAME'=>'Wind'],
'subscribers',
['interests'=>['interestId'=>true, 'interestId'=>true]],
);
如果你想从组/兴趣中移除某人,只需添加 false
。
要从特定列表中退订,这样做:
Newsletter::unsubscribe('rincewind@discworld.com', 'subscribers');
删除订阅者
删除不同于退订。与退订不同的是,删除会员会导致所有历史记录(添加/同意/修改)丢失,并将其从列表中删除。大多数情况下,你应该使用 unsubscribe
而不是 delete
。
执行删除操作如下:
Newsletter::delete('rincewind@discworld.com');
获取订阅者信息
使用 getMember
函数获取订阅者的信息:
Newsletter::getMember('lord.vetinari@discworld.com');
对于 MailCoach,这会返回一个 Spatie\Mailcoach\Resources|Subscriber
实例。 对于 MailChimp,这会返回一个包含订阅者信息的数组。
如果没有用该电子邮件地址订阅的人,函数将返回 false
。
还有一个便利方法用于检查某人是否已订阅:
Newsletter::hasMember('nanny.ogg@discworld.com'); //返回布尔值
此外,还可以检查用户是否订阅了你的列表:
Newsletter::isSubscribed('lord.vetinari@discworld.com'); //返回布尔值
更多功能
如果你需要更多功能,可以通过 getApi()
函数获取底层 API 的实例:
$api = Newsletter::getApi();
如果你在集成 MailChimp 时遇到问题,可以查看最后的错误:
Newsletter::getApi()->getLastError();
测试
运行测试:
vendor/bin/pest
变更日志
请参见 CHANGELOG,了解最近发生了什么变化。
贡献
详细贡献指南,请参见 CONTRIBUTING。
安全
如果您发现任何安全相关的问题,请发送电子邮件至 security@spatie.be,而不是使用问题追踪器。
许可证
该软件采用 MIT 授权。详情请参阅 LICENSE 文件。
借助这款 Laravel 开源包,管理和扩展你的邮件订阅变得无比便捷。立即加入,体验高效且灵活的邮件服务管理!