一、附件无后缀的问题
#之前写的发送附件时(在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['