Laravel 4 包,用于与多个云电子邮件提供商集成

1.2 2014-06-11 03:38 UTC

This package is auto-updated.

Last update: 2024-09-14 06:24:32 UTC


README

####支持的电子邮件提供商

###安装 将 abishekrsrikaanth/mailto 添加到 composer.json 作为需求

{
    ...
    "require": {
        ...
        "abishekrsrikaanth/mailto": "1.*"
        ...
    },
}

更新 composer

$ php composer.phar update

将提供者添加到您的 app/config/app.php

'providers' => array(
    ...
    'Abishekrsrikaanth\Mailto\MailtoServiceProvider',
),

并在 app/config/app.php 上添加 Facade 信息

'aliases'   => array(
    ...
	'MailTo'      => 'Abishekrsrikaanth\Mailto\Facades\Mailto',
),

发布配置并将配置与不同电子邮件提供商的凭据一起设置

php artisan config:publish abishekrsrikaanth/mailto

###Mandrill #####使用 Mandrill 发送电子邮件

$mandrill = MailTo::Mandrill();
$mandrill->addRecipient($email, $name)
         ->setFrom($email, $name)
         ->setHtml($html)
         ->setText($text)
         ->setSubject($subject)
         ->send();

#####使用 Mandrill 队列电子邮件

$mandrill = MailTo::Mandrill();
$mandrill->addRecipient($email, $name)
         ->setFrom($email, $name)
         ->setHtml($html)
         ->setText($text)
         ->setSubject($subject)
         ->queue();

#####在指定时间发送电子邮件

$timestamp = new DateTime('+1 hour');

$mandrill = MailTo::Mandrill();
$mandrill->addRecipient($email, $name)
         ->setFrom($email, $name)
         ->setHtml($html)
         ->setText($text)
         ->setSubject($subject)
         ->send($timestamp);

#####向一批收件人发送电子邮件

$mandrill = MailTo::Mandrill();
$mandrill->addRecipient($email, $name)
         ->setFrom($email, $name)
         ->setHtml($html)
         ->setText($text)
         ->setSubject($subject)
         ->sendBatch();

#####在指定时间向一批收件人发送电子邮件

$timestamp = new DateTime('+1 hour');

$mandrill = MailTo::Mandrill();
$mandrill->addRecipient($email, $name)
         ->setFrom($email, $name)
         ->setHtml($html)
         ->setText($text)
         ->setSubject($subject)
         ->sendBatch($timestamp);

#####为 Mandrill 动态传递凭据

$mandrill = MailTo::Mandrill(array('apikey'=>'MADRILL_API_KEY'));
$mandrill->addRecipient($email, $name)
         ->setFrom($email, $name)
         ->setHtml($html)
         ->setText($text)
         ->setSubject($subject)
         ->send();

#####Mandrill 的示例响应 - 成功

[
    {
        "email": "recipient.email@example.com",
        "status": "sent",
        "reject_reason": "hard-bounce",
        "_id": "abc123abc123abc123abc123abc123"
    }
]

#####Mandrill 的示例响应 - 错误

{
    "status": "error",
    "code": 10,
    "name": "PaymentRequired",
    "message": "This feature is only available for accounts with a positive balance."
}

#####管理 Webhooks 该包的配置允许您配置在 Mandrill 控制面板上创建的 Webhooks。启用并配置后,将自动创建必要的 Webhooks 路由,并准备好实施。启用和配置 Webhooks 的详细说明如下。

'mandrill' => array(
		'apikey'    => 'MANDRILL_API_TOKEN',
		'web_hooks' => array(
			'enabled' => false,
			'routes'  => array(
				array(
					'route_url'   => '/mandrill/send',
					'route_types' => array('send'),
					'webhook_key' => 'API_WEBHOOK_KEY',
					'listener'    => array(
						'type' => 'event',
						'name' => ''
					),
					'verify_hook' => false
				),
				array(
					'route_url'   => '/mandrill/bounce',
					'route_types' => array(''),
					'webhook_key' => '',
					'listener'    => array(
						'type' => 'queue',
						'name' => ''
					),
					'verify_hook' => false
				)
			)
		)
	)
web_hooks.enabled
指示是否启用或禁用 Webhooks 的配置
web_hooks.routes
一个您希望为 Mandrill 的各种事件类型定义的路由配置数组

让我们看看路由配置的详细情况。

routes.route_url
Webhook 的路由 URL。在上面的示例中,它配置为 /mandrill/send,路由将被配置为 http://base_url/mandrill/send
routes.route_types
一个包含为该 Webhook 配置的事件列表的数组对象。您会在设置 Webhook 时这样做。不同的事件类型列在 http://help.mandrill.com/entries/21738186-Introduction-to-Webhooks 上。此配置仅在 verify_hook 设置为 true 时使用
routes.webhook_key
当创建 Webhook 时自动生成的密钥。您可以在 Mandrill 的 Webhook 控制面板中找到。每个 Webhook 都有不同的密钥生成。同样,此配置仅在 verify_hook 设置为 true 时使用
routes.listener
监听器用于在应用上配置钩子,以便在调用webhook时进行监听。您可以配置2个监听器:事件监听器(Event)和队列监听器(Queue)。type参数用于指定要配置的监听器类型[事件,队列]。name参数用于指定应调用的监听器名称。查看Laravel文档中关于如何设置事件监听器或队列的部分将有助于理解。
routes.verify_hook
它接受一个布尔值,并通知路由验证webhook调用。这里进行了2种验证:
a. Mandrill基于数据和webhook的密钥发送加密签名,可用于验证webhook调用是否确实来自Mandrill。
b. 它检查事件类型是否与webhook调用匹配。

将配置设置为true将自动开始验证webhook调用,无论调用是否来自Mandrill。无需额外的编码。
#####方法

###PostMarkApp

#####发送电子邮件

$postMark = MailTo::PostMark();
$message  = $postMark->getMessageInstance();
$message->addRecipient("RECIPIENT_EMAIL")
	->setFrom("FROM_EMAIL", "FROM_NAME")
	->setSubject("EMAIL_SUBJECT")
	->setHtml("HTML_CONTENT_GOES_HERE")
	->setText("TEXT_CONTENT_GOES_HERE");
$postMark->send($message);

#####Postmark对于发送方法,如果消息发送成功时的示例响应

{
  "ErrorCode" : 0,
  "Message" : "OK",
  "MessageID" : "b7bc2f4a-e38e-4336-af7d-e6c392c2f817",
  "SubmittedAt" : "2010-11-26T12:01:05.1794748-05:00",
  "To" : "receiver@example.com"
}

#####发送批量电子邮件

$postMark = MailTo::PostMark();
$message  = $postMark->getMessageInstance();
$message->addRecipient("RECIPIENT_EMAIL")
    ->setFrom("FROM_EMAIL", "FROM_NAME")
	->setSubject("EMAIL_SUBJECT")
	->setHtml("HTML_CONTENT_GOES_HERE")
	->setText("TEXT_CONTENT_GOES_HERE");
$postMark->send($message);

#####Postmark对于发送方法,如果消息发送成功时的示例响应

[
    {
      "ErrorCode" : 0,
      "Message" : "OK",
      "MessageID" : "b7bc2f4a-e38e-4336-af7d-e6c392c2f817",
      "SubmittedAt" : "2010-11-26T12:01:05.1794748-05:00",
      "To" : "receiver1@example.com"
    },
    {
      "ErrorCode" : 0,
      "Message" : "OK",
      "MessageID" : "e2ecbbfc-fe12-463d-b933-9fe22915106d",
      "SubmittedAt" : "2010-11-26T12:01:05.1794748-05:00",
      "To" : "receiver2@example.com"
    }
]

#####正在进行中

  • ElasticMail

#####即将推出实现

  • MailGun

  • PostageApp

  • Mad Mimi

  • Alpha Mail

endorse Bitdeli Badge