Google App Engine(GAE)接收邮件(E-mail)及转载用法
“Google App Engine 可让您在 Google 的基础架构上运行您的网络应用程序。App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。使用 Google App Engine,将不再需要维护服务器:您只需上传您的应用程序,它便可立即为您的用户提供服务.继09月03日提供XMPP服务支持后,10月13 日又更新了SDK,增加了接收邮件(Incoming email support)支持。
Google App Engine提供了2种发送邮件的方式。
第一种方式是用mail API的send_mail或send_mail_to_admins函数。
前者可以发给任意邮箱,后者是发给这个应用程序的管理员(所以不用给出收件人邮箱)。这是完整的参数列表文档。
必填的参数有(更进一步来说,这些参数都不能为空字符串):
sender:发信人邮箱。必须为当前登录用户或这个应用程序的管理员的邮箱。
to:收件人邮箱。有2种方式:”[email protected]”和”ooxx <[email protected]>”。还可以发给多个收件人,如:["[email protected]", "[email protected]"]。
subject:邮件主题
body:邮件内容(纯文本)
可选参数有:
cc:抄送人邮箱。参数类型同收件人邮箱。
bcc:密送人邮箱。参数类型同收件人邮箱。
reply_to:指定收件人回复的地址(不给出时,默认是回复给发信人)
html:用html方式写的邮件内容。如果收件人的邮件客户端支持html,则显示这部分内容。但body参数不能省略,仍必须给出。
attachments:附件。它是一个由元组(tuple)组成的列表(list)。每个元组都用于描述一个附件,它们都含2个值,分别为文件名和文件内容(类型为byte string)。由于我也没发过,建议大家直接参考示例代码和支持的文件格式。
下面给个简单的例子,演示怎么发邮件:
代码:
from google.appengine.api import mail
mail.send_mail(’[email protected]’,
u’发现红包’, #中文必须写成unicode,不然会变成乱码
‘rt’,
html = u’<a href=”http://www.xxx.com/”>领取红包</a>’)
第二种方式是用mail API的EmailMessage类。
首先需要创建一个mail.EmailMessage类型的对象,再给这个参数的属性赋值(即收件人邮箱等,也可以在创建对象时就赋值),最后调用对象的send方法就可以了。对象的属性和上面send_mail的参数列表是一样的。
这种方式可以重复利用对象,只需更改对象的属性,然后调用send方法,就可以多次发送邮件。如果需要多次发送,每次只需更改稍许内容,则用这种方式比较方便。
由于Google给出了示例代码(含发信人为当前登录用户的情况),我就不自己写了。
注意:
发送过程是异步执行的,发送时只送到Google App Engine的邮件服务器(我这里显示的邮送域是apphosting.bounces.google.com)便返回(不会报告错误)。如果发送失败, 发信人只会在自己邮箱收到发送失败的提示邮件,Google App Engine不会也无法对其进行错误处理。
但如果发送时参数有误(如邮件地址不合法,或少了邮件内容等),则可能会产生出现异常,这里有详细的异常列表。
此外,mail API里还有检查邮箱地址是否合法的函数。