jmillerdesign/mandrill

这使您可以使用 CakePHP 2.x 中的 CakeEmail 与 Mandrill 一起使用

2.2.2 2015-04-20 20:19 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:18:36 UTC


README

这使您可以使用 CakePHP 2.0 中的 CakeEmail 与 Mandrill 一起使用。

安装

  1. 将此目录复制到 /app/Plugin/Mandrill(或者如果您愿意,可以使用 子模块

     git clone https://github.com/jmillerdesign/MandrillTransport-CakePHP.git app/Plugin/Mandrill;
    
  2. 为 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 密钥为您自己的密钥。

  3. /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 的响应。

使用模板设置 fromsubject

在上面的示例中,如果您没有设置 $email->subject(),则它将使用 Mandrill 的模板设置。如果您设置了 from 电子邮件地址和/或名称为 mandrill@example.com,则它将使用 Mandrill 的模板设置。 注意:设置发件人地址是 Cake 的要求。

内部电子邮件使用

  1. 配置 mandrillapp.com/inbound 并将 Webhook 指向 http://example.com/mandrill/emails/inbound(将 example.com 替换为您的实时域名 URL)

  2. 如果您想在收到电子邮件时执行某些操作,请创建事件处理程序。在您的控制器中

     <?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));
     	}
    
  3. 在 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);
     }
    
  4. 附件将自动保存,并可以公开访问: http://example.com/mandrill/attachments/{MessageID}/{AttachmentName}

© Soroush Khanlou 2013
由以下人员大量修改: J. Miller