首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python gmail api发送带有附件的电子邮件pdf全部为空

Python gmail api发送带有附件的电子邮件pdf全部为空
EN

Stack Overflow用户
提问于 2016-11-14 14:49:27
回答 2查看 1.9K关注 0票数 7

我使用的是Python3.5,下面的代码主要来自google api页面……针对Python3.x的https://developers.google.com/gmail/api/guides/sending略微修订

我可以成功地发送带有内容文本和附件pdf的电子邮件,但附件中的pdf是完全空白的。

请提前帮助和感谢!

代码语言:javascript
复制
def create_message_with_attachment(bcc, subject, message_text,  file,sender='me' ):
  message = MIMEMultipart()
  message['bcc'] = bcc
  message['from'] = sender
  message['subject'] = subject

  msg = MIMEText(message_text)
  message.attach(msg)

  content_type, encoding = mimetypes.guess_type(file)

  main_type, sub_type = content_type.split('/', 1)
  fp = open(file, 'rb')
  msg = MIMEBase(main_type, sub_type)
  msg.set_payload(fp.read())
  fp.close()
  filename = os.path.basename(file)
  msg.add_header('Content-Disposition', 'attachment', filename=filename)
  message.attach(msg)

  raw = base64.urlsafe_b64encode(message.as_bytes())
  raw = raw.decode()
  return {'raw':raw}
EN

回答 2

Stack Overflow用户

发布于 2017-09-09 15:56:37

你只是忘了对附件进行编码。将代码中的两行替换为:

代码语言:javascript
复制
  import email.encoders

  ...
  msg.add_header('Content-Disposition', 'attachment',filename=filename)
  email.encoders.encode_base64(msg)
  message.attach(msg)
  ...
票数 11
EN

Stack Overflow用户

发布于 2018-06-11 02:19:21

更少的代码行,看起来工作得很好,但非常慢:

代码语言:javascript
复制
def SendPDF(to, file, Server):
    msg = EmailMessage()
    msg['From'] = ME
    msg['To'] = to
    msg['Subject'] = 'Send a pdf File'

    with open(file, 'rb') as PDFFile:
        PdfContent = PDFFile.read()

        msg.add_attachment(PdfContent, maintype='', subtype='pdf',
                           filename="The Pdf File Bro.pdf")
    Server.send_message(msg)

但是我不知道追加到maintype的是什么,这个参数是必需的,你可以写任何你想写的东西。我没有找到任何关于它的文档,否则不要管理SMTP到知道它的程度。如果有人知道..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40583272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档