jmillerdesign / mandrill
这使您可以使用 CakePHP 2.x 中的 CakeEmail 与 Mandrill 一起使用
Requires
- php: >=5.3.0
- composer/installers: *
This package is not auto-updated.
Last update: 2024-09-28 15:18:36 UTC
README
这使您可以使用 CakePHP 2.0 中的 CakeEmail 与 Mandrill 一起使用。
安装
-
将此目录复制到
/app/Plugin/Mandrill
(或者如果您愿意,可以使用 子模块)git clone https://github.com/jmillerdesign/MandrillTransport-CakePHP.git app/Plugin/Mandrill;
-
为 Mandrill 传输协议添加电子邮件配置。将其添加到
/app/Config/email.php
。您可能发现其名为email.php.default
。public $mandrill = array( 'transport' => 'Mandrill.Mandrill', 'uri' => 'https://mandrillapp.com/api/1.0/', 'key' => 'your-key-here' );
确保更新 API 密钥为您自己的密钥。
-
在
/app/Config/bootstrap.php
中加载插件。CakePlugin::load('Mandrill');
配置
Mandrill 有许多可以通过消息传递的选项,这些选项在 Mandrill API 文档 中描述。您可以在电子邮件配置(例如 1)或使用 $email->config()(例如 2)中传递这些选项。
示例 1(全局配置)
public $mandrill = array(
'transport' => 'Mandrill.Mandrill',
'uri' => 'https://mandrillapp.com/api/1.0/',
'key' => 'your-key-here',
'track_opens' => true,
'track_clicks' => true
);
示例 2(实例配置)
$email->config(array(
'tags' => array('password_reset'),
'template_name' => 'password_reset',
'auto_html' => false
));
外部电子邮件使用
使用基于 CakeEmail
类和规范。
要使用,导入 CakeEmail
类
App::uses('CakeEmail', 'Network/Email');
并在您想发送电子邮件时按如下方式使用它。
$email = new CakeEmail();
$email->config('mandrill');
$email->from('noreply@yourapp.com');
$email->to('email@domain.com');
$email->subject('Subject for Email');
$result = $email->send();
$result
对象将包含有关消息发送成功或失败的信息。 $result
将包含 Mandrill
键,其中包含 Mandrill 的响应。
使用模板设置 from 和 subject
在上面的示例中,如果您没有设置 $email->subject()
,则它将使用 Mandrill 的模板设置。如果您设置了 from
电子邮件地址和/或名称为 mandrill@example.com
,则它将使用 Mandrill 的模板设置。 注意:设置发件人地址是 Cake 的要求。
内部电子邮件使用
-
配置 mandrillapp.com/inbound 并将 Webhook 指向
http://example.com/mandrill/emails/inbound
(将 example.com 替换为您的实时域名 URL) -
如果您想在收到电子邮件时执行某些操作,请创建事件处理程序。在您的控制器中
<?php /** * Handle inbound email * * @param CakeEvent $event Event object * @return void */ public function handleInboundEmail($event) { // Do something with the event CakeLog::write('debug', print_r($event->data, true)); }
-
在 Config/bootstrap.php 中,添加以下内容,将事件发送到您的控制器。将 "YourController" 替换为您放置 handleInboundEmail 方法的控制器的名称。
<?php /** * Handle inbound Mandrill email * Pass it off to YourController->handleInboundEmail() */ App::uses('CakeEventManager', 'Event'); CakeEventManager::instance()->attach('handleInboundEmail', 'Mandrill.inbound'); function handleInboundEmail($event) { App::uses('YourController', 'Controller'); $controller = new YourController(); $controller->handleInboundEmail($event); }
-
附件将自动保存,并可以公开访问: http://example.com/mandrill/attachments/{MessageID}/{AttachmentName}
© Soroush Khanlou 2013
由以下人员大量修改: J. Miller