我已经设法通过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'})
答案 0 :(得分:11)
要在您的GAE应用中接收邮件,请按照文档here进行操作:特别是,您将获得具有InboundEmailMessage
属性的类attachments
的实例,并且我引用:
是文件附件列表, 可能是空的。列表中的每个值 是两个元素的元组: 文件名和文件内容。
然后,根据these GAE docs,您“创建一个上传网址”并在您的上传处理程序(通常是BlobstoreUploadHandler的子类)中使用get_upload
来获取BlobInfo个实例并将他们的元数据放在某个地方,稍后您可以根据应用的需要将其取回。
最后,您POST
将attachments
上面的数据method-POST
发送到您自己新生成的“上传网址”,例如:使用urlfetch.fetch(使用application/x-www-form-urlencoded
和标准fetch
编码中的有效内容,如果他们直接上传数据,那么用户将填写“表单”,这是“正常”将数据放入blobstore的方法 - 例如,您可以使用urllib.urlencode来准备有效负载。)
“自我POST”将使用您应用的另一个实例将数据“接收”到blobstore中(当接收电子邮件的实例等待时,{{1}}是同步的)。
答案 1 :(得分:2)