在Google App Engine上使用Mandrill / MailChimp发送确认电子邮件

时间:2012-10-21 16:05:37

标签: python google-app-engine email python-2.7 mailchimp

在过去的几天里,我一直在尝试从我的GAE应用发送确认电子邮件,但我的GAE电子邮件配额已达到限制,虽然我已启用结算功能,但我的电子邮件配额将不会重置刚启用结算功能。

我已经研究过使用Mandrill / MailChimp(通过包装器API)并让他们从我的桌面发送电子邮件。但是,当我在GAE应用程序中使用我的代码并在本地开发服务器或在线服务器上运行时,他们将不会发送电子邮件,因为mailsnake,chimpy等都需要“请求”python模块。所以我下载了模块并将其正确地放在我的app引擎项目中。

然后我又出现了另一个错误......

  File "/home/ahmad/Dropbox/milsal/requests/packages/urllib3/connectionpool.py", line 83, in set_cert
    'CERT_NONE': ssl.CERT_NONE,
AttributeError: 'module' object has no attribute 'CERT_NONE'

然后我意识到请求模块依赖于ssl.py,ssl.py是_ssl的python包装器(app引擎python(2.7)不支持的c库)。

所以我尝试将ssl.c放在那个位置,但它没有用......所以现在我卡住了..

我想我自己,即使我把ssl.c这样python ssl包装模块可以使用它,可能会出现另一个错误,我永远无法跟上追逐所有依赖关系mailchimp / mandrill python api包装器需要运行在我的桌面python上自动出现的GAE版本的python上。

虽然我可以使用我的ubuntu python发送电子邮件,但我无法从GAE发送它们。

我的第一个问题是,我想知道是否有人收到了来自GAE的mailchimp / mandrill电子邮件。

第二个问题是:如果没有其他替代方法我正在做什么来使用mandrill / mailchimp从GAE发送电子邮件如何在GAE项目中安装python模块以及它自动的所有依赖项??< / p>

感谢您提前提供任何帮助..

2 个答案:

答案 0 :(得分:4)

您可以直接使用Mandrills REST API to send a message

您可以使用URL Fetch API发出REST请求,使用JSON来序列化/反序列化有效负载。

答案 1 :(得分:2)

根据@ PeterKnego的回答发布适合我的代码:

from google.appengine.api import urlfetch

def sendMandrillEmail():
    json_mandrill = {
        "key": "YOUR_API_KEY",
        "message": {
            "html": "<p>Example HTML content</p>",
            "subject": "Test subject",
            "from_email": "example@email.com",
            "from_name": "Example Name",
            "to": [
                {
                    "email": "example.to@email.com"
                }
            ]
        }
    }
    url = "https://mandrillapp.com/api/1.0/messages/send.json"
    result = urlfetch.fetch(url=url,
        payload=json.dumps(json_mandrill),
        method=urlfetch.POST,
        headers={'Content-Type': 'application/x-www-form-urlencoded'})