gpt4 book ai didi

python - 附加来自 Google 云端硬盘的文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:35 25 4
gpt4 key购买 nike

我一直在尝试使用 Jinja2 创建模板化的 Google 云端硬盘文档,并最终将该文档作为 PDF 附件通过电子邮件发送。

到目前为止,我已经完成了大部分工作,但现在卡在了附件部分。我收到错误“InvalidAttachmentTypeError:无效的附件类型”

有没有办法改进这一点,使其更加高效。

class Upload(webapp2.RequestHandler):
@decorator.oauth_required
def get(self):
if decorator.has_credentials():
try:
body = {'title': 'My New Text Document',
'description': 'Hello World'}

template = JINJA_ENVIRONMENT.get_template('document.html')
template_values = {'name': 'Simon'}
fh = StringIO.StringIO(template.render(template_values))

media_body = MediaIoBaseUpload(fh,
mimetype='text/html',
resumable=False)

http = httplib2.Http(memcache)
http = decorator.http()

service = discovery.build('drive', 'v2', http=http)

file = service.files().insert(body=body,
media_body=media_body,
convert=True).execute(http=http)

m = mail.EmailMessage()
m.sender = 'myfromemailaaddress@gmail.com'
m.to = 'mytoemailaddress@gmail.com'
m.subject = 'My Subject'
m.html = '<p>My body.</p>'
m.attachments = [(file['title'],
file['exportLinks']['application/pdf'])]
m.send()

self.redirect('/')

except client.AccessTokenRefreshError:
self.redirect('/')

else:
self.redirect(decorator.authorize_url())

最佳答案

在 m.attachments 属性中,您应该像为每个附件创建一个元组一样,第一个元素是文档标题,第二个元素是文档数据本身。

就您而言,您的文档数据只是一个字符串,而不是一个文件,所以这就是您的问题。您应该先从云端硬盘检索 pdf 文件,然后将其作为附件。

您可以查看here如何使用 downloadURL 属性(或者在您的情况下使用 exportLinks)下载文件内容。

此外,请确保为文件设置正确的扩展名。没有扩展名或具有某些特定扩展名的文件将被列入黑名单,无法作为附件发送。 Check this

希望这有帮助。

关于python - 附加来自 Google 云端硬盘的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com