我使用的是Python3.5,下面的代码主要来自google api页面……针对Python3.x的https://developers.google.com/gmail/api/guides/sending略微修订
我可以成功地发送带有内容文本和附件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}
发布于 2017-09-09 15:56:37
你只是忘了对附件进行编码。将代码中的两行替换为:
import email.encoders
...
msg.add_header('Content-Disposition', 'attachment',filename=filename)
email.encoders.encode_base64(msg)
message.attach(msg)
...
发布于 2018-06-11 02:19:21
更少的代码行,看起来工作得很好,但非常慢:
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到知道它的程度。如果有人知道..。
https://stackoverflow.com/questions/40583272
复制相似问题