abishekrsrikaanth / mailto
Laravel 4 包,用于与多个云电子邮件提供商集成
1.2
2014-06-11 03:38 UTC
Requires
- php: >=5.3.0
- guzzle/guzzle: 3.8.*@dev
- illuminate/support: 4.x
This package is auto-updated.
Last update: 2024-09-14 06:24:32 UTC
README
####支持的电子邮件提供商
- 安装
- Mandrill - (文档)
- PostmarkApp
###安装 将 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 = 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 = 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