dekalee / mailjet-bundle
此扩展包为SwiftMailer提供了一种通过Mailjet发送邮件的传输方式
Requires
- php: >=5.5
- doctrine/orm: ^2.3.6
- mailjet/mailjet-apiv3-php: ~1.2
- symfony/swiftmailer-bundle: ^3.2
Requires (Dev)
- henrikbjorn/phpspec-code-coverage: ^2.0
- phpspec/phpspec: ~2.0
Suggests
- doctrine/doctrine-bundle: To use the list functionnality
README
用法
此扩展包提供了用于从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_CampaignName
和 subject_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安装。