更改附件标题 MIME python

Posted

技术标签:

【中文标题】更改附件标题 MIME python【英文标题】:Changing Attachment Header MIME python 【发布时间】:2020-03-12 13:54:13 【问题描述】:

我试图将我附加的 pdf 的标题从默认的“noname”更改为其他一些标题。不幸的是,我的代码的以下“add_header”部分不会更改实际的标题名称。是否有任何替代方案不会损坏或更改附件的内容?

fromaddr = 'XXXXX@gmail.com'  
toaddrs  = 'XXXXX@gmail.com'

username = 'XXXX'  
password = 'XXXXX'
msg = MIMEMultipart()
msg['Subject']='Spam'

msg.preamble = 'SDFSFSDF'


file=open(r'XXXXXX.pdf','rb').read()

msg.attach(MIMEApplication(file,'pdf'))

msg.add_header('XXXXXX', 'file', filename = 'XXXXXX.pdf')

server = smtplib.SMTP('smtp.gmail.com', 587)  
server.ehlo()
server.starttls()
server.login(username, password)  
server.sendmail(fromaddr, toaddrs, msg.as_string())  
time.sleep(2)

编辑

这是附加的文件标题:

【问题讨论】:

【参考方案1】:

你想要这样的东西:

msg.add_header("Content-Disposition", 'attachment; filename="%s"' % 'XXXXX.pdf')

这将在消息中生成此标头

'Content-Disposition: attachment; filename="XXXXX.pdf"'

替换原来的add_header调用
msg.add_header("Content-Disposition", 'attachment; filename="%s"' % 'hello.pdf')

在 smtp 调试服务器中生成此输出*

b'Content-Type: multipart/mixed; boundary="===============3303386632460914267=="'                                                   
b'MIME-Version: 1.0'                                                                                                                
b'Subject: Spam'                                                                                                                    
b'Content-Disposition: attachment; filename="hello.pdf"'                                                                            
b'X-Peer: ::1'                                                                                                                      
b''                                                                                                                                 
b'SDFSFSDF'                                                                                                                         
b'--===============3303386632460914267=='                                                                                           
b'Content-Type: application/pdf'                                                                                                    
b'MIME-Version: 1.0'                                                                                                                
b'Content-Transfer-Encoding: base64'                                                                                                
b''
b'LotsOfBase64'                        

*python -m smtpd -n -c DebuggingServer localhost:1025

【讨论】:

你得到什么标题? "noname" 是我得到的标题 我已经添加了我得到的输出。也许你可以edit你的问题来显示生成的确切标题? 我在发送电子邮件时添加了标题的输出。如您所见,它仍然显示“无名”。也许它与更新 MIME 版本有关?

以上是关于更改附件标题 MIME python的主要内容,如果未能解决你的问题,请参考以下文章

python MIME将多个附件附加到多部分消息

python 2.7 smtplib 和 mime 的电子邮件附件问题

可以接收 MIME 附件的 Python SMTP 服务器

无法在python中使用MIME发送带有pdf附件的电子邮件

如何将 msg 中的附件附加到 Mime 以在 Python 中作为电子邮件发送?

在 PHP 中使用 MIME 的电子邮件文件附件