在Windows Azure上安装Sendy(一个PHP应用程序),通过亚马逊SES来发送廉价的电子报邮件
[原文发表地址] Installing Sendy (a PHP app) on Windows Azure to send inexpensive newsletter email via Amazon SES
[原文发表时间] 2031-03-19 6:14 AM
TL;DR 总结
· Sendy.co 是一个友好而完美的PHP应用程序,它使用亚马逊的SES(简单邮件服务)来廉价地发送邮件。
· 在Windows Azure上可以很容易地安装PHP应用程序。
· Azure网站不支持mod_rewrite,所以你需要把这些规则引入到web.config。相关内容你可以参考帖子 great Sendy web.config for Windows。
· 即使官方并没有说Sendy支持Windows,但在Azure 上可以很好的工作。我可以确认Sendy在任何地方都可以很好工作。
· 我现在就在Windows Azure上用亚马逊SES来运行我的电子报系统。
· 下面是技术详细信息。
寻找一个更便宜的电子报解决方案
为什么不选择 Rube Goldbergian 解决方案? 其实,它并没有那么糟糕,这是有其背景故事的。我在几个月前开了一个小的链接的博客电子报,纯属娱乐。
如果你喜欢你可以在https://hanselman.com/newsletter上进行订阅。它是一个低流量、一个月一到两次的小东西,主要是用来和朋友们分享我在网络上遇到的问题。
我开始是在 TinyLetter.com 做的,它在低流量电子报方面做得非常好。然而,它的流量开始增加,现在我的站点已经达到了TinyLetter允许的最大订阅者数量。 TinyLetter 是MailChimp的前台,所以我看了一下它们的报价 。看上去5k-10k的订阅者数量每个月需要75美元!让我再查一下SendGrid。他们有一个至多100k邮件量的每个月$79的选择,但那还是需要每年960美元,然而这个电子报没有销售任何东西,也没有提供任何有用的服务。
假设我可以雇佣人或者寻求赞助商,但那需要工作量。我只是想把我的列表发出去而已。我可以用我的博客。好吧,我正在用,但我喜欢电子报所提供的高连通性,所以我已经发了几周的电子报了,这样订阅者可以及早得到信息。订阅者可以明显地查看它或者他们不要订阅。
Twitter上的一个人向我介绍了Sendy.co。它是一个自己做主机的PHP应用程序。它前端是亚马逊的简单邮件服务(SES),用它发邮件是极便宜的。这个应用程序真的非常完美而且友好。你需要花59美元来购买,但他们在网站上说“如果你遇到问题,我们可以帮助你。如果问题没有解决,我们会给你退款。”这句话打动了我,因此我买了它。
我对PHP一无所知,然而,我了解网页,所以我确信我可以把它配好。
Sendy网站有诸多免责申明:
需要什么?
你需要获得Unix服务器上PHP和mySQL的支持,比如Apache上的Linux。几乎所有的主机公司都支持他们。在WINDOWS上是不支持的,你不用犯傻去尝试了 。
好吧,我承认,最后部分是我自己加上去的。但我认为我不会在Linode上来部署它,因为我有Azure帐号,而且并不是每个月都用。我确信这个可以实现。再说了,即使不行,我也可以花最少的钱在成千上万的小型主机上部署这个PHP应用程序。如果这个可以的话,那真的太好了,我可以在一个地方拥有所有的东西。
在Windows Azure云平台上做一个Sendy PHP应用程序的实例
我切换到 Azure,然后开了一个带有MySQL数据库的网站:
下面,我在Azure里为我的站点下载了发布配置文件。我也看了数据库的连接字符串,因为我需要这个来连接到Sendy实例。
然后我下载了Sendy(付费后)输入密码并解压到一个目录。我在WebMatrix上打开了这个目录。它在我的本地机上安装了PHP,这样我就可以在本地运行它了(尽管我没有实际操作)。在这个实例中我用WebMatrix作为直接发布到Azure的超级简单的方法。
我点击远程选项卡,然后点设置来导入我下载的发布配置文件。先不要发布!我还需要添加一个web.config,这样我们才能在Windows上运行这个PHP应用程序。
Windows上的Sendy - .htaccess vs. web.config URL rewrite
我注意到在我的Sendy安装中有一个.htaccess文件。那意味着它们可能已经让mod_rewrite运行,来让URLs更好。这是他们的文件:
ErrorDocument 404 "[404 error] If you're seeing this error after install, check this thread on our forum for the fix: https://sendy.co/forum/discussion/5/404-error-after-install/p1"
Options +FollowSymLinks
Options -Multiviews
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-]+)$ $1.php [L]
# Link tracker
RewriteRule ^l/([a-zA-Z0-9/]+)$ l.php?i=$1 [L]
# Open tracker
RewriteRule ^t/([a-zA-Z0-9/]+)$ t.php?i=$1 [L]
# Web version
RewriteRule ^w/([a-zA-Z0-9/]+)$ w.php?i=$1 [L]
# unsubscribe
RewriteRule ^unsubscribe/(.*)$ unsubscribe.php?i=$1 [L]
# subscribe
RewriteRule ^subscribe/(.*)$ subscribe.php?i=$1 [L]
带有PHP的Windows Azure 网站还不支持mod_rewrite,所以我只能让web.config来做UrlRewrite一样的事情。幸运的是IIS上5年前已经可以做到mod_rewrite规则引入到web.config文件中了。
我将Sendy放到网站的根目录下,所以没有别的子目录或路径了。如果在sendy或其他目录下,我可能还要在Regular Expression下设置得更为具体一些。您必须要考虑Sendy在什么位置,web.config又在什么位置。这样一来,最简单的方法就是根目录了,将Sendy放到它自己的路径下,然后添加web.config。您将会发现这真是一个不错的选择。
注意: 这个web.config和Sendy论坛上提到的文件是不一样的,比它更好,而且改进了很多。它工作得更好更彻底。论坛上的这个不是非常完美。
这个web.config需要和Sendy应用程序在同一个目录中。我是直接用WebMatrix制作的这个文件。
Windows Azure Sendy 配置
下一步,修改includes/config.php,写入您的应用程序的位置还有您的数据库连接的详细信息。
我选择将我的网站扩展至共享模式,这样我就可以为域添加自定义CNAME。我转到 DNSimple 上,在这里我可以管理我的DNS,为Hanselman.com添加一个CNAME来指向我的fancypantsmail.azurewebsites.net 站点。然后在Azure点击管理域 ,添加这个新的子域。
注意: 你告诉Sendy的域名必须和config.php文件中中的一致,也要与你真实运行的相一致。我为hanselman.com购买了它,这样它可以只在hanselman.com上运行。在CNAME子域问题没有正确解决前,Sendy还是不能运行的。
完成Sendy的安装
Sendy入门写的非常好。请仔细阅读它。
我点击我的URL,在Sendy中输入我的许可证密钥。如果你没有看到任何CSS或图片或者你看到了404错误,你就知道这个应用程序还没有安装正确。那意味着 web.config (我用来模仿 mod_rewrite)还不正确。
我跳过了入门基础的第四步,因为我相信我已经做过这个了,即使我并不计划上传任何文件。我安装了亚马逊SES,验证了我的邮件地址。做好这个后,反馈和投诉处理也是超级重要的,所以请认真阅读。
你会要确认你的亚马逊SES邮件被验证过,那样Sendy有个反馈和投诉处理节点的安装。
疑难杂症: 我不得不确认SES和SNS都是在亚马逊东部第一区。
一旦这些节点安装好了,而且也检查过了 Sendy入门基础 中解释的,接下来你就可以做一些测试了。
建立一个电子报活动
Sendy 应用程序真是非常的好,而且易于使用,易于运行。我发现它和TinyLetter一样易于使用,然而显然还有很多强大的功能我还没有用到。
我可以将我的用户转移过来,中间很少碰到麻烦。我从TrinyLetter中导出他们,然后导入到Sendy。我想知道什么时候MySQL数据库会变得大的让我需要为此付费?但现在我为我的网站创建的MySQL数据库还是免费的。
做一个订阅表格
我到现在还是没有发现有可以内建到Sendy应用程序的订阅表格(你能找到吗?),所以我在 https://hanselman.com/newsletter上做了一个,那只是发送到Sendy API订阅节点。在 https://sendy.co/api.上有详细信息,它只是一个HTTP POST! 你可以将它内建到任何你喜欢的地方。我只是自己做了一个简单的表格。
希望在不久的将来这将成为https://hanselman.com/newsletter的一个合理而经济的解决方案!
* 免责申明及细则: Sendy 链接是引用的链接,但在Sendy上他们 并不认识我。我只是喜欢他们。如果你购买它的话,也许我可以得到一点饮料钱。还要注意,在Windows上安装Sendy,在他们说之前显然还是不支持的。不要在Windows问题上烦扰那些友善的人。假设你拥有足够的技术,而且愿意进行尝试。我在Azure上安装只是因为我在Azure上已经有12个站点了。你也许可以在一台亚马逊或者Linode的Linux机器成功安装。祝你好运!
Comments
- Anonymous
February 15, 2015
I oppened fancypantsmail.azurewebsites.net and it is other PHP application foe Email marketing. It is support sending via Amazon SES API, Mandrill API and Sendgridd API. So good.