0

我目前在 MediaTemple 的网格服务器上有一个客户端网站,该网站很快将移至虚拟专用服务器。目前,它正在使用一些技巧来利用 cron 作业和数据库排队(以避免超出 MediaTemple 设置的限制)来涓涓细流发送他的大量电子邮件。

我们不能使用第三方解决方案(如 MailChimp 等),因为客户支付的价格太高了(他的邮件列表上有 75,000 多人)。因此,经过大量研究后,我发现使用 Google App Engine 基本上是一种可扩展的方式来发送大量电子邮件是一个可行的选择。

他的网站目前使用 PHP。我最终确实想使用 Python/Django,但暂时不是……有几件事我不太明白……比如有一个名为“example.appspot.com”的应用程序,可以吗?是他网站上的子域(如 mailapp.example.com)?在阅读了 Google App Engine 上的用户指南之后,应用程序使用的电子邮件地址似乎是应用程序的管理员(如 admin@example.appspot.com)......必须是这样吗?它不可能是 example@example.com 之类的东西?

我知道发送这么多电子邮件意味着我必须在应用程序上启用计费。我知道我可以发送多少个配额。我什至看到了可以帮助轻松设置的代码:http: //github.com/tow/appengine-mailer

理想情况下,我想替换发送电子邮件的 PHP 代码(使用 mail() 等),并改为使用 Google App Engine 发送。

有没有人成功完成这种设置?谁能帮我拼出所需的步骤?或者为使用这样的系统提供任何陷阱?

4

2 回答 2

5

你的第一个问题:

拥有名为“example.appspot.com”的应用程序,这可以是他网站上的子域(如 mailapp.example.com)吗?

的,正如常见问题解答所说:

Google App Engine 可以与 Google Apps 一起使用,为您的面向 Internet 的应用程序提供自定义域名,例如 myapp.com。

默认情况下,当您在 Google App Engine 上部署服务时,您的服务可通过 [your-application-id].appspot.com 访问。为了为您的应用程序提供更强大的品牌体验,您可能还希望在 [my-brand].com 或 www.[my-brand].com 上提供该应用程序。

为了为您的服务设置这些品牌访问位置,您必须证明您拥有该域名或通过 Google 购买该域名。Google App Engine 允许您证明您的域的所有权并使用 Google Apps 购买新域名。

你的第二个问题:

应用程序使用的电子邮件地址是应用程序的管理员(如 admin@example.appspot.com)......必须是那个吗?它不可能是 example@example.com 之类的东西?

当然,您可以使用您想要的 Google 用户 ID 作为您应用的管理员用户。

我知道发送这么多电子邮件意味着我必须在应用程序上启用计费。我知道我可以发送多少个配额。

是的,根据文档$0.0001通过电子邮件发送给每个收件人。邮件列表中有 75,000 人,这是$7.50发送给所有人的每封邮件。根据这些其他文档,免费配额是每天通过电子邮件发送 2,000 个收件人,绝对最大值是 740 万(也有速率限制,即每分钟免费和最大配额邮寄多少收件人)。

理想情况下,我想替换发送电子邮件的 PHP 代码(使用 mail() 等),并改为使用 Google App Engine 发送。

抱歉,帮不了你,我用 Python 运行 App Engine,而不是 PHP。但我听说,使用Quercus,可以在 App Engine 的 JVM“端”上运行 PHP。

于 2010-08-06T14:40:51.850 回答
4

您可以使用 appengine for PHP 以这种方式向用户发送邮件:

<?php

    require_once 'google/appengine/api/mail/Message.php';
    use google\appengine\api\mail\Message;

    $mail_options = [
        "sender" => 'you@example.com',
        "to" => $_POST['email'],
        "subject" => "Type a subject here",
        "textBody" => "Type message here",
            ];

    try {
    $message = new Message($mail_options);
    $message->send();
    } catch (InvalidArgumentException $e) {
    echo $e;
    }

?>
于 2013-11-11T09:03:05.410 回答