welp / mailjet-swiftmailer
2.0.0
2019-06-13 12:40 UTC
Requires
- php: >=7.0
- mailjet/mailjet-apiv3-php: ^1.2
- swiftmailer/swiftmailer: ~6.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- symfony/config: >=2.0|~3.0
This package is auto-updated.
Last update: 2019-10-20 12:42:42 UTC
README
Mailjet的SwiftMailer传输实现 ([NEW] 现在支持发送API v3.1) Mailjet发送API v3.1 兼容Mailjet发送API V3和V3.1
如果您发现任何问题,请随时提出问题!
待办事项
- 添加URL标签
- 沙箱模式
- 改进单元测试(大量代码重复)
安装
使用Composer安装此包
composer require mailjet/mailjet-swiftmailer
使用示例
$transport = new MailjetTransport($dispatchEvent, $apiKey, $apiSecret); $transport->setClientOptions(['url' => "api.mailjet.com", 'version' => 'v3.1', 'call' => true]); $transport->send($message);
(默认选择发送API v3)
Mailjet客户端自定义配置
您可以在传输构造函数中传递一个数组或使用setClientOptions
函数。
$clientOptions = ['url' => "api.mailjet.com", 'version' => 'v3.1', 'call' => false]; $transport = new MailjetTransport($dispatchEvent, $apiKey, $apiSecret, $clientOptions); or $transport->setClientOptions(['url' => "api.mailjet.com", 'version' => 'v3.1', 'call' => true]);
$options的属性
- url (默认: api.mailjet.com) : API域名
- version (默认: v3) : API版本(仅适用于Mailjet API V3及以上)
- call (默认: true) : 打开(true)/关闭API调用
- secured (默认: true) : 打开(true)/关闭使用'https'的调用
Mailjet自定义头
您可以通过SwiftMailer设置特定的Mailjet头或自定义用户定义的头。
例如
$headers = $message->getHeaders(); $headers->addTextHeader('X-MJ-TemplateID', $templateId); $headers->addTextHeader('X-MJ-TemplateLanguage', true); $vars = array("myFirstVar" => "foo", "mySecondVar" => "bar"); $headers->addTextHeader('X-MJ-Vars', json_encode($vars));
注意:您需要使用json_encode
将变量的数组编码,以便与SMTP传输兼容。
Mailjet批量发送
$emails = ['f001@bar.com', 'f002@bar.com', 'f003@bar.com', 'f004@bar.com', 'f005@bar.com', 'f006@bar.com', ...] $messages = []; foreach ($emails as $email) { $message = new \Swift_Message('Test Subject', '<p>Foo bar</p>', 'text/html'); $message ->addTo($email) ->addFrom('from@example.com', 'From Name') ->addReplyTo('reply-to@example.com', 'Reply To Name') ; array_push($messages, $message); } $transport = new MailjetTransport($dispatchEvent, $apiKey, $apiSecret); $result = $transport->bulkSend($messages);
注意:与Spool不兼容(SwiftMailer已从其API中移除bulkSend)。
Symfony中的集成
如果您想在您的Symfony项目中使用MailjetTransport,请按照以下步骤操作
composer require mailjet/mailjet-swiftmailer
- 在您的
services.yml
中注册MailjetTransport
swiftmailer.mailer.transport.mailjet: class: Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport arguments: - "@swiftmailer.transport.eventdispatcher.mailjet" - "%mailjet.api_key%" - "%mailjet.secret_key%"
注意:我们将mailjet.api_key
和mailjet.secret_key
设置到parameters.yml
中
- 最后,在您的
config.yml
中配置SwiftMailer
# Swiftmailer Configuration swiftmailer: transport: mailjet
注意:您也可以注入您自己的Mailjet\Client
mailjet.transactionnal.client: class: "%mailjet.client.class%" arguments: - "%mailjet.api_key%" - "%mailjet.secret_key%" - %mailjet.transactionnal.call% - %mailjet.transactionnal.options% swiftmailer.transport.eventdispatcher.mailjet: class: Swift_Events_SimpleEventDispatcher swiftmailer.mailer.transport.mailjet: class: Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport arguments: - "@swiftmailer.transport.eventdispatcher.mailjet" - "%mailjet.api_key%" - "%mailjet.secret_key%" - %mailjet.transactionnal.call% - %mailjet.transactionnal.options% calls: - method: setExternalMailjetClient arguments: - '@mailjet.transactionnal.client'
Mailjet参考
执行测试
vendor/bin/phpunit -c .
贡献
如果您想为此项目做出贡献,请参阅此处