可以在App Engine的Blobstore中获取电子邮件附件吗?

时间:2010-03-27 22:13:28

标签: google-app-engine blobstore

我已经设法通过GAE收到的电子邮件将电子邮件附件发送到Amazon S3,但是有人知道将附件(如图像)添加到blobstore中的技术。

非常感谢任何帮助。

到目前为止的代码(在Alex的帮助下)

upload_url = blobstore.create_upload_url('/upload')
msg = MIMEMultipart()
msg.set_type('multipart/form-data')
msg.set_payload({'file': content})
result = urlfetch.fetch(upload_url, payload=urllib.urlencode(msg), method=urlfetch.POST, headers={'Content-Type': 'multipart/form-data'})

2 个答案:

答案 0 :(得分:11)

要在您的GAE应用中接收邮件,请按照文档here进行操作:特别是,您将获得具有InboundEmailMessage属性的类attachments的实例,并且我引用:

  

是文件附件列表,   可能是空的。列表中的每个值   是两个元素的元组:   文件名和文件内容。

然后,根据these GAE docs,您“创建一个上传网址”并在您的上传处理程序(通常是BlobstoreUploadHandler的子类)中使用get_upload来获取BlobInfo个实例并将他们的元数据放在某个地方,稍后您可以根据应用的需要将其取回。

最后,您POSTattachments上面的数据method-POST发送到您自己新生成的“上传网址”,例如:使用urlfetch.fetch(使用application/x-www-form-urlencoded和标准fetch编码中的有效内容,如果他们直接上传数据,那么用户将填写“表单”,这是“正常”将数据放入blobstore的方法 - 例如,您可以使用urllib.urlencode来准备有效负载。)

“自我POST”将使用您应用的另一个实例将数据“接收”到blobstore中(当接收电子邮件的实例等待时,{{1}}是同步的)。

答案 1 :(得分:2)