dekalee/mailjet-bundle

此扩展包为SwiftMailer提供了一种通过Mailjet发送邮件的传输方式

安装数: 57,436

依赖关系: 0

建议者: 0

安全性: 0

星级: 2

关注者: 8

分支: 1

开放问题: 2

类型:symfony-bundle

v2.1.0 2018-10-18 15:00 UTC

README

Scrutinizer Code Quality Code Coverage Build Status Latest Stable Version Total Downloads License

用法

此扩展包提供了用于从Symfony项目的SwiftMailer发送邮件的传输元素。

配置

要配置此扩展包,您需要输入API密钥、密钥和默认模板ID

    # app/config/config.yml
    dekalee_mailjet:
        api_key: %api_key%
        secret_key: %secret_key%
        base_template_id: %base_template_id%

您还必须在邮件器配置中修改传输设置

    # app/config/config.yml
    swiftmailer:
        transport:  mailjet

扩展

在Mailjet中,您可以定义发送邮件的模板。您可以为要发送的每封邮件使用不同的模板。

要执行此操作,您需要从发送的消息中猜测模板ID。

创建一个猜测器

您应该实现以下类: Dekalee\MailjetBundle\Guesser\TemplateIdGuesserInterface

内部有两个方法

  • supports,它将决定您的策略是否能够为该消息提供模板ID
  • guess,它将为给定消息返回模板ID

声明服务

一旦创建您的类,您应该将标签 dekalee_mailjet.guesser.template_id.strategy 添加到服务定义中

活动管理

将用户关联到活动

要将联系人关联到活动,您应该使用在容器中声明为 dekalee_mailet.subscriber.contact_list 键的 ContactListSubscriber

    class RegisterUser
    {
        protected $subscriber;

        public function __construct(ContactListSubscriber $subscriber)
        {
            $this->subscriber = $subscriber;
        }

        public function addUser(User $user)
        {
            $this->subscriber->subscribe(
                'campaignName',
                $user->getEmail(),
                [
                    'subject' => 'Mail subject (linked to the user)',
                    'content' => 'Mail content (linked to the user)',
                ]
            );
        }
    }

用于向此列表中的联系人发送个人电子邮件的模板将能够使用变量 content_CampaignNamesubject_CampaignName

从活动中取消用户的订阅

要将联系人关联到活动,您应该使用在容器中声明为 dekalee_mailet.unsubscriber.contact_list 键的 ContactListUnSubscriber

    class UnRegisterUser
    {
        protected $unsubscriber;

        public function __construct(ContactListUnsubscriber $unsubscriber)
        {
            $this->unsubscriber = $unsubscriber;
        }

        public function delUser(User $user)
        {
            $this->unsubscriber->unsubscribe('campaignName', $user->getEmail());
        }
    }

自定义模板

如果您想使用带有一些自定义变量的Mailjet自定义模板,在扩展包中可以这样做

  • 创建自定义消息
    namespace Bar;

    use Dekalee\MailjetBundle\Message\SwiftCustomVarsMessage;

    class FooMessage extends SwiftCustomVarsMessage {}
  • 在vars属性中填充您要发送的参数
    $message = new FooMessage();

    $message->setVars(['bar' => 'baz']);
  • 配置简单消息猜测器以使用您的模板
    dekalee_mailjet:
        simple_template_choice:
            Bar\FooMessage: 1

如果您通过Mailjet发送邮件,将使用模板1。

在您的开发环境中,您将收到一封包含所有vars json编码的邮件。

调试

从版本2.1.0开始,可以使用Mailjet的调试功能。

您可以直接在配置文件中配置它们

    dekalee_mailjet:
        reporting_email: foo@bar.com
        force_deliver: true

reporting_email 参数将用于发送错误报告邮件。

force_deliver 参数将强制邮件投递,即使存在语法问题。

限制

目前,此扩展包不支持Mailjet的行内附件功能,但欢迎贡献 :)

关于symfony4的警告

当与环境参数一起使用时,SwiftMailer扩展包会自动通过工厂生成传输。为了避免此工作流程,您不应使用环境参数来配置SwiftMailer安装。