sicaboy/laravel-newsletter

在 Laravel 中管理新闻通讯

4.2.1 2018-03-10 07:53 UTC

README

Latest Version Software License Build Status Quality Score StyleCI Total Downloads

此包提供了一种简单的方法来集成 MailChimp 与 Laravel 5。幕后使用 MailChimp API 的 v3。以下是一些你可以用此包做什么的示例

请注意,在本文档编写时,MailChimp 的默认合并变量命名为 FNAMELNAME。在我们的示例中,我们使用 firstNamelastName 以便更容易阅读。

Newsletter::subscribe('rincewind@discworld.com');

Newsletter::unsubscribe('the.luggage@discworld.com');

//Merge variables can be passed as the second argument
Newsletter::subscribe('sam.vines@discworld.com', ['firstName'=>'Sam', 'lastName'=>'Vines']);

//Subscribe someone to a specific list by using the third argument:
Newsletter::subscribe('nanny.ogg@discworld.com', ['firstName'=>'Nanny', 'lastName'=>'Ogg'], 'Name of your list');

//Subscribe someone to a specific list and require them to confirm via email:
Newsletter::subscribePending('nanny.ogg@discworld.com', ['firstName'=>'Nanny', 'lastName'=>'Ogg'], 'Name of your list');

//Subscribe or update someone
Newsletter::subscribeOrUpdate('sam.vines@discworld.com', ['firstName'=>'Foo', 'lastName'=>'Bar']);

// Change the email address of an existing subscriber
Newsletter::updateEmailAddress('rincewind@discworld.com', 'the.luggage@discworld.com');

//Get some member info, returns an array described in the official docs
Newsletter::getMember('lord.vetinari@discworld.com');

//Get the member activity, returns an array with recent activity for a given user
Newsletter::getMemberActivity('lord.vetinari@discworld.com');

//Get the members for a given list, optionally filtered by passing a second array of parameters
Newsletter::getMembers();

//Check if a member is subscribed to a list
Newsletter::isSubscribed('rincewind@discworld.com');

//Returns a boolean
Newsletter::hasMember('greebo@discworld.com');

//If you want to do something else, you can get an instance of the underlying API:
Newsletter::getApi();

Spatie 是一家位于比利时安特卫普的网页设计公司。你可以在我们的网站上找到我们所有开源项目的概述 在这里

安装

您可以通过 composer 使用以下命令安装此包:

composer require spatie/laravel-newsletter

该包将自动注册自己。

要发布配置文件到 config/newsletter.php,请运行:

php artisan vendor:publish --provider="Spatie\Newsletter\NewsletterServiceProvider"

这将在你配置目录中发布一个名为 newsletter.php 的文件,内容如下:

return [

    /*
     * The API key of a MailChimp account. You can find yours at
     * https://us10.admin.mailchimp.com/account/api-key-popup/.
     */
    'apiKeys' => [
        'name1'=> 'token1',
        'name2'=> 'token2',
    ],

    /*
     * The listName to use when no listName has been specified in a method.
     */
    'defaultListName' => 'subscribers',

    /*
     * Here you can define properties of the lists.
     */
    'lists' => [

        /*
         * This key is used to identify this list. It can be used
         * as the listName parameter provided in the various methods.
         *
         * You can set it to any string you want and you can add
         * as many lists as you want.
         */
        'subscribers' => [

            /*
             * A MailChimp list id. Check the MailChimp docs if you don't know
             * how to get this value:
             * http://kb.mailchimp.com/lists/managing-subscribers/find-your-list-id.
             */
            'id' => env('MAILCHIMP_LIST_ID'),
        ],
    ],

    /*
     * If you're having trouble with https connections, set this to false.
     */
    'ssl' => true,

];

从 3.x 升级到 4.x

我们的配置文件有一个新的名称。我们将名称从 laravel-newsletter.php 更改为 newsletter.php

如果你正在升级到 4.x,包正在寻找新的配置文件名称。在这种情况下,你必须将你的 app\config 文件夹中的文件重命名。

用法

安装完包并在配置文件中填写了值后,使用此包的工作将变得非常简单。以下所有示例都使用了外观。别忘了在你的文件顶部导入它。

use Newsletter;

切换到另一个账户

Newsletter::switchAccount('name1');

订阅、更新和取消订阅

可以通过以下方式订阅电子邮件地址:

use Newsletter;

Newsletter::subscribe('rincewind@discworld.com');

让我们取消某人的订阅

Newsletter::unsubscribe('the.luggage@discworld.com');

您可以将一些合并变量作为第二个参数传递

Newsletter::subscribe('rincewind@discworld.com', ['firstName'=>'Rince', 'lastName'=>'Wind']);

请注意,在本文档编写时,MailChimp 的默认合并变量命名为 FNAMELNAME。在我们的示例中,我们使用 firstNamelastName 以便更容易阅读。

您可以使用第三个参数将某人订阅到特定的列表

Newsletter::subscribe('rincewind@discworld.com', ['firstName'=>'Rince', 'lastName'=>'Wind'], 'subscribers');

第三个参数是您在配置文件中配置的列表的名称。

您还可以订阅和/或更新某人。如果此人已经订阅,则此人将被订阅或更新

Newsletter::subscribeOrUpdate('rincewind@discworld.com', ['firstName'=>'Foo', 'lastname'=>'Bar']);

您可以通过使用第四个参数将某人订阅到一个或多个特定的组/兴趣

Newsletter::subscribeOrUpdate('rincewind@dscworld.com', ['firstName'=>'Rince','lastName'=>'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');

这将返回一个包含订阅者信息的数组。如果没有通过该电子邮件地址订阅的人,则函数将返回 false

还有一个方便的方法可以检查某人是否已经订阅

Newsletter::hasMember('nanny.ogg@discworld.com'); //returns a boolean

此外,您还可以检查用户是否订阅了您的列表

Newsletter::isSubscribed('lord.vetinari@discworld.com'); //returns a boolean

创建活动

这是 createCampaign 的签名

public function createCampaign(
    string $fromName,
    string $replyTo,
    string $subject,
    string $html = '',
    string $listName = '',
    array $options = [],
    array $contentOptions = [])

请注意,活动将被创建,但不会发送邮件。

处理错误

如果出现问题,您可以使用以下方法获取最后一个错误:

Newsletter::getLastError();

如果您只想确保最后一个操作是否成功,您可以使用

Newsletter::lastActionSucceeded(); //returns a boolean

还需要其他功能吗?

如果您需要更多功能,您可以通过以下方式获取底层 MailChimp Api 的实例:

$api = Newsletter::getApi();

测试

使用以下命令运行测试:

vendor/bin/phpunit

变更日志

请参阅CHANGELOG以获取更多有关最近更改的信息。

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何安全相关的问题,请发送电子邮件至freek@spatie.be,而不是使用问题跟踪器。

明信片软件

您可以使用这个包,但如果它进入您的生产环境,我们非常欢迎您从您家乡寄给我们一张明信片,注明您正在使用我们的哪个包。

我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。

我们将所有收到的明信片发布在我们的公司网站上

致谢

支持我们

Spatie是一家位于比利时的安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述在这里

您的业务依赖于我们的贡献吗?联系我们在Patreon上的支持。所有承诺都将专门用于分配人力进行维护和新奇事物。

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。