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

War*_*eng 7 python pdf gmail attachment

我正在使用 python 3.5 和以下代码主要来自 google api 页面... https://developers.google.com/gmail/api/guides/sending 针对 python 3.x 稍作修改

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

请帮助并提前致谢

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}
Run Code Online (Sandbox Code Playgroud)

小智 11

您只是忘记对附件进行编码。用以下代码替换两行代码:

  import email.encoders

  ...
  msg.add_header('Content-Disposition', 'attachment',filename=filename)
  email.encoders.encode_base64(msg)
  message.attach(msg)
  ...
Run Code Online (Sandbox Code Playgroud)