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

Eff*_*for 6 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'})
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 11

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

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

然后,根据这些GAE文档,您"创建一个上传URL"并在您的上传处理程序(通常是BlobstoreUploadHandler的子类)中get_upload用于获取BlobInfo实例并将其元数据放在某个位置,稍后您可以根据应用程序的需要将其取回.

最后,您POST将数据(您从attachments上面获得)发送到您自己新生成的"上传URL",例如使用urlfetch.fetch(用method-POST标准application/x-www-form-urlencoded编码中的有效负载表示用户填写的"表单")直接上传数据,这是将数据放入blobstore的"常规"方式 - 例如,您可以使用urllib.urlencode来准备有效负载).

"自我POST"将使用您的应用程序的另一个实例将数据"接收"到blobstore中(同时接收电子邮件的实例等待fetch同步).