python2.7 解决email foxmail for mac 收到附件无后缀未命名文件,无发件人,漏掉邮件内容问题

本文主要介绍了在使用Python2.7处理邮件时遇到的Foxmail for Mac显示问题,包括附件无后缀、发件人和邮件内容丢失。通过分析源码和调整邮件构造方式,成功解决了这些问题。提供了一段修复后的邮件发送代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python2.7 解决email中foxmail for mac 收到附件无后缀,无发件人,漏掉邮件内容问题:https://blog.youkuaiyun.com/SHSQLDLL/article/details/86700029

一、附件无后缀的问题

#之前写的发送附件时(在windows的foxmail接收无问题,mac的foxmail的附件大于2M时会出现问题):
file = "test.txt"
message = MIMEMultipart()
att1 = MIMEText(open(file , 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="%s"'%file#这里的filename就是附件名称展示
message.attach(att1)

在windows的foxmail和网页版的邮件均可正常接收,展示正确的附件名称.

但是突然一天发送的附件超过2M时, foxmail for mac中接收到到附件就展示成"未命名文件"了......

查看foxmail for mac中的源码(导出邮件.eml用txt打开查看)时,看到filename="=?utf-8?B?5pyq5ZG95ZCN5paH5Lu2?="解码过来就是"未命名文件",应该是发送时格式有问题, 找了n种方法,试了将filename写死(filename="abc.txt")不会出问题, 文件大小为1M多不会出问题...查看email中的message.py文件,发现提供了一个add_header方法来新增, 试用后居然可以了.

暂时未发现问题所在, 请了解的同学回复一下.

#修改后的,在windows/mac的foxmail中均展示正常

def addMessageHeader(message,key,value,**params):
    message.__delitem__(key)#Content-Type,Content-Disposition 等若不删除的话可能会同时存在两个
    message.add_header(key,value,**params)#该方式在foxmail mac/windows 接收均正常

file = "test.txt"#大于3M
message = MIMEMultipart()
att1 = MIMEText(open(file , 'rb').read(), 'base64', 'utf-8')
addMessageHeader(att1 ,"Content-Type","application/octet-stream",name=filename)
addMessageHeader(att1 ,"Content-Disposition","attachment",filename=filename)#使用该方法可避
                                            #免foxmail for mac接受到的文件名展示为"未命名文件
message.attach(att1)

二、收件人,发件人,主题在foxmail for mac中接受为utf解码异常甚至是为空的情况

#之前的写法,在windows的foxmail中总是正常, 在mac的foxmail总是有问题
message = MIMEMultipart()
message['From'] = Header("aaa@qq.com", 'utf-8')
message['
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值