1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP的电子邮件列表替代方法:使用Mailgun的List API

PHP的电子邮件列表替代方法:使用Mailgun的List API

时间:2018-09-20 16:10:10

相关推荐

PHP的电子邮件列表替代方法:使用Mailgun的List API

您将要创造的

在过去的几年中,我对开源电子邮件列表应用程序和付费的基于云的提供商都感到沮丧。 在本教程中,我将指导您采用 ,这是我已经成功使用两年的经济解决方案。

开源PHPList总是相当复杂,当他们开始在似乎更复杂而不是更少的方向上改革其用户界面时,我失去了兴趣。 在西雅图的主动签名收集活动的中间, Mailchimp禁用了我的电子邮件列表,并说我没有适当地获得成员的许可-即使每个人都亲自向我们的活动提供了他们的书面形式的电子邮件。 然后,我发现Mailgun,并决定构建自己的解决方案,此后一直使用。

Mailgun是基于云的SaaS电子邮件大炮,例如SendGrid 。 实际上,它每月免费提供多达10,000封电子邮件。 Mailgun功能强大到令人难以置信,并以多种流行语言提供了完善的API。 它提供了发送和接收功能,从头开始很难开发后者。 尽管Mailgun不提供用于丰富HTML新闻简报的模板,但它提供了一个可以构建任何内容的平台。

我使用Mailgun的清单服务与朋友交流并与我的社交社区联系,以及进行业务和市场推广。 对于我的大多数需求,简单HTML广播电子邮件效果很好。

在本教程中,我将指导您完成ListApp,它是基于Mailgun List API构建的小程序。 在后续教程中,我将指导您在本地PHP和MySQL上构建自己的电子邮件列表架构。 每种方法都有其自身的优势。

如果您主要是要广播并且想使用Mailgun自己的基于云的Web用户界面来管理列表,则ListApp可能是最佳选择。 这是Mailgun基于Web的用于管理列表的用户界面的示例:

使用ListApp,列表的主副本将保存在Mailgun的云中,并通过API在本地同步到ListApp的安装。

如果您可能希望构建群组电子邮件列表,或者希望对电子邮件和地址需求进行更细粒度的控制,那么您可能想学习如何从头开始构建列表功能。 在下一个教程中,我们仍将依赖Mailgun引擎和API,但是将在应用程序中管理列表,而不是使用Mailgun的List API。 这也避免了同步的复杂性。

开源ListApp

ListApp为您可能与Mailgun的邮件列表功能一起使用的常见情况提供了一个基于Web的简单前端:

从Mailgun云同步您的列表和列表成员 创建,更新和删除列表 将成员导入列表 发送消息到列表

您可以在任何基于LAMP的系统上安装ListApp。 我已经发布了有关安装Ubuntu LAMP服务器的通用指南,以供参考。 该应用程序包括有关在具有1 GB RAM 的Ubuntu服务器上设置ListApp的说明。 它需要PHP 5.x,MySQL 5.x以及PEAR和cURL库。

ListApp是用PHP的Yii框架编写的 。 您无需了解有关Yii框架的任何信息即可运行该应用程序。 如果您不想使用Yii,则可以在ListApp中使用的Yiigun组件上构建。 Yiigun.php本质上是一个PHP类文件,其中包含用于利用Mailgun Mailing List SDK的方法和帮助程序。

您需要注册一个免费(或更高级别)的Mailgun帐户 ,以获取设置文件的API密钥。 如果您有付费帐户,则需要添加域并创建DNS设置以使用它们。 如果您使用免费帐户,则您的域将是。 因此,您的列表地址可以是wildcard@。 您的Mailgun API密钥将显示在控制面板主页上 。

如何使用Mailgun列表API

使用Mailgun邮件列表API非常简单。 Mailgun提供了自己的Mailing List API文档来帮助我们。 您可以在Yiigun.php组件中查看ListApp如何使用Mailgun API。 ListApp使用Mailgun PHP SDK与Mailgun进行交互。

初始化Mailgun PHP SDK

确保在安装过程中遵循有关配置API密钥的说明。 每当使用Yiigun类时,都会调用构造函数,并使用Mailgun的API创建安全的初始化:

function __construct() { // initialize mailgun connection$this->mg = new Mailgun(Yii::app()->params['mailgun']['api_key']);}

建立清单

您可以使用ListApp右侧的菜单选项创建新的邮件列表。 每个列表都需要一个名称,列表电子邮件地址和描述。 创建新列表时,ListApp还将列表及其设置上传到Mailgun。 您还可以更新任何列表的属性。

这是我们创建新列表的方法:

public function listCreate($newlist) { $result = $this->mg->post("lists",array('address'=>$newlist->address,'name'=>$newlist->name,'description' => $newlist->description,'access_level' => $newlist->access_level));return $result->http_response_body; }

这是我们更新邮件列表属性的方法:

public function listUpdate($existing_address,$model) { $result = $this->mg->put("lists/".$existing_address,array('address'=>$model->address,'name' => $model->name,'description' => $model->description,'access_level' => $model->access_level));return $result->http_response_body; }

将成员导入列表

您可以将新成员从ListApp导入到任何列表。 我们使用PEAR的电子邮件列表解析库来实现此功能。 您可以以“Personal Name <mailbox@>的形式粘贴任何电子邮件地址列表,并用逗号或Personal Name <mailbox@>行分隔。 ListApp将在本地添加成员并将其上传到。

要批量添加成员,首先我们为要上传的新成员创建一个JSON字符串-这是您可能会使用的一些示例代码。

$json_upload ='[' foreach ($addresses as $i) {$json_upload.='{';$json_upload.='"name": "'.$i->name.'", '; $json_upload.='"address": "'.$i->address.'"'; $json_upload.='},'; }$json_upload.=']';

然后,我们使用以下JSON字符串调用批量上传功能:

public function memberBulkAdd($list='',$json_str='') { $result = $this->mg->post("lists/".$list.'/members.json',array('members' => $json_str,'subscribed' => true,'upsert' => 'yes'));return $result->http_response_body; }

您也可以使用“添加成员”菜单选项将单个成员添加到列表中。

传送讯息

您可以使用右侧的菜单将消息发送到任何列表。 我们像其他任何邮件一样将出站邮件传递到Mailgun。$to地址实际上是Mailgun邮件列表地址,例如ourlist@:

public function send_simple_message($to='',$subject='',$body='',$from='') { if ($from == '') $from = Yii::app()->params['supportEmail'];$domain = Yii::app()->params['mail_domain'];$result = $this->mg->sendMessage($domain,array('from' => $from, 'to' => $to, 'subject' => $subject, 'text' => $body, )); return $result->http_response_body; }

Mailgun然后管理将邮件传递给各个收件人。

您可以在此处查看实际使用的Mailgun List API的更多示例 。

您还可以使用一些通用的Mailgun收件人变量来包括个人称呼,例如Hi%recipient_fname%(请参阅模板变量文档)。

同步列表和列表成员

您还可以通过Mailgun Web用户界面管理列表。 然后,当您打开ListApp时,单击“同步”选项。 这将在Mailgun中获取所有现有邮件列表的副本,并将其所有成员下载到本地数据库中。 它实际上是从网站同步您的邮件列表。 此选项不同步。

这是fetchLists函数。 使用Mailgun PHP SDK可以使这一过程变得非常简单:

public function fetchLists() { $result = $this->mg->get("lists");return $result->http_response_body; }

这是我们获取成员的方式:

public function fetchListMembers($address) { $result = $this->mg->get("lists/".$address.'/members');return $result->http_response_body; }

扩展ListApp

当前版本的ListApp与Mailgun实时对话,并且没有大量错误处理。 从长远来看,最好添加异步的,排队的API请求。

除了Mailgun自己的Mailing List API文档 (包括cURL,Ruby,PHP,Python,Java和C#中的示例)之外,您还可以查看,提取和改编Yiigun.php文件及其功能,以用于自己的PHP应用程序或框架。

如果您不使用Yii,则需要根据Mailgun的安装说明使用composer来安装SDK。

您学到了什么

现在,您有了一个applet,可以通过Mailgun API构建和管理基于云的列表,并使用它们来使您的朋友,同事和客户保持最新状态。 在第二部分中,我将向您展示如何在PHP和MySQL中本地构建电子邮件列表。 我们仍将依靠Mailgun引擎和API,但将在应用程序中管理列表,而不是使用Mailgun的List API。

请随时在下面发表您的问题和评论。 您也可以通过Twitter @reifman与我 联系或直接给我发送电子邮件 。 关注我的Tuts +讲师页面,以查看本系列的后续文章。

相关链接

Mailgun List API文档 如何使用SendGrid(Tuts +)使电子邮件成为Web应用程序的强大组成部分

Yii框架简介(Tuts +)

翻译自: /tutorials/e-mail-list-alternatives-with-php-using-mailguns-list-api--cms-22824

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。