如何有效地使用Google App Engine通过PHP发送大量电子邮件?

0 投票
2 回答
2555 浏览
提问于 2025-04-16 02:25

我现在有一个客户的网站,托管在MediaTemple的Grid服务器上,马上要迁移到一个虚拟私人服务器(VPS)。目前网站使用了一些小技巧,通过定时任务(cron jobs)和数据库排队来慢慢发送大量的邮件,以避免超过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来发送邮件。

有没有人成功做过这种设置?能不能帮我列出需要的步骤?或者提供一些使用这种系统时的注意事项?

2 个回答

4

你可以使用appengine来给用户发送邮件,方法如下:

<?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;
    }

?>
5

你的第一个问题:

有一个叫做 'example.appspot.com' 的应用,这能成为他网站上的一个子域名吗(比如 mailapp.example.com)?

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

Google App Engine 可以和 Google Apps 一起使用,为你的互联网应用提供一个自定义的域名,比如 myapp.com。

默认情况下,当你在 Google App Engine 上部署你的服务时,你的服务会在 [你的应用ID].appspot.com 上访问。为了让你的应用有更强的品牌体验,你可能希望这个应用能在 [我的品牌].com 或 www.[我的品牌].com 上访问。

为了设置这些品牌访问地址,你必须证明你拥有这个域名,或者通过 Google 购买这个域名。Google App Engine 允许你证明你对域名的拥有权,并通过 Google Apps 购买新的域名。

你的第二个问题:

这个应用使用的邮箱地址是应用的管理员(比如 admin@example.appspot.com)……这必须是这样吗?不能是像 example@example.com 这样的邮箱吗?

我知道发送这么多邮件意味着我必须在应用上启用计费。我明白仍然有一个发送数量的限制。

没错,按照文档,每发送一封邮件给一个收件人要收费 $0.0001。如果邮件列表有 75,000 人,那给他们每个人发送邮件的费用就是 $7.50。根据其他文档,免费的配额是每天可以发送给 2,000 个收件人,最大限制是 740 万(还有发送速率的限制,也就是在免费和最大配额下每分钟可以发送给多少个收件人)。

我希望能替换掉 PHP 代码中发送邮件的部分(使用 mail() 等),改为用 Google App Engine 来发送。

抱歉,我在 App Engine 上使用的是 Python,而不是 PHP。不过我听说通过Quercus,可以在 App Engine 的 JVM "侧" 运行 PHP。

撰写回答