Cad*_*nge 4 python email email-attachments
我正在尝试发送带有电子邮件正文的PDF附件,该电子邮件正文总结了PDF文件的内容.电子邮件正文包含HTML和纯文本.
我正在使用以下代码来构建电子邮件消息对象:
#Part A
logging.debug(" Building standard email with HTML and Plain Text")
msg = MIMEMultipart("alternative")
msg.attach(MIMEText(email_obj.attachments["plain_text"], "plain", _charset="utf-8"))
msg.attach(MIMEText(email_obj.attachments["html_text"], "html", _charset="utf-8"))
#Part B
logging.debug(" Adding PDF report")
pdf_part = MIMEApplication(base64.decodestring(email_obj.attachments["pdf_report"]), "pdf")
pdf_part.add_header('Content-Disposition', 'attachment', filename="pdf_report.pdf")
logging.debug(" Attaching PDF report")
msg.attach(pdf_part)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我附上PDF,我的电子邮件正文就会消失.如果我注释掉附加PDF的代码(B部分),则会显示电子邮件正文.
除非我弄错了,看起来好像我的PDF附件正在覆盖电子邮件正文.
这样的消息应该有一个更复杂的结构.邮件本身包含两个"顶级"MIME部分,内容类型为"multipart/mixed".这些MIME部分中的第一个具有"multipart/alternative"类型,带有两个子部分,一个用于纯文本,另一个用于HTML.第二个主要部分是PDF附件
pdfAttachment = MIMEApplication(pdf, _subtype = "pdf")
pdfAttachment.add_header('content-disposition', 'attachment', filename = ('utf-8', '', 'payment.pdf'))
text = MIMEMultipart('alternative')
text.attach(MIMEText("Some plain text", "plain", _charset="utf-8"))
text.attach(MIMEText("<html><head>Some HTML text</head><body><h1>Some HTML Text</h1> Another line of text</body></html>", "html", _charset="utf-8"))
message = MIMEMultipart('mixed')
message.attach(text)
message.attach(pdfAttachment)
message['Subject'] = 'Test multipart message'
f = open("message.msg", "wb")
f.write(bytes(message.as_string(), 'utf-8'))
f.close()
Run Code Online (Sandbox Code Playgroud)
您可以尝试在您喜欢的邮件程序(邮件用户代理)中打开邮件的"源视图"并查看自己(Thunderbird中的Ctrl-U)
| 归档时间: |
|
| 查看次数: |
5849 次 |
| 最近记录: |