1.附件变成如图bin格式结尾的文件:
2.解决方法:
若是代码写成,
att1["Content-Disposition"] = 'attachment; filename="'+filename+'"' #filename发送之后的文件名
att1[“Content-Disposition”] = ‘attachment; filename="’+filename+‘"’ #filename发送之后的文件名
那么接收的文件就是.bin结尾,若要正常查看,将文件后缀修改成想要的后缀即可。
若是嫌麻烦不想手动修改,那么代码修改为:
att1.add_header('Content-Disposition', 'attachment', filename='需要接收为的文件名.后缀')
这样修改后的文件可以正常显示
3.分析原因:
打印 att1[“Content-Disposition”],发现att1[“Content-Disposition”]存在差异.如图:
很明显两种方法的编码方式存在差异.
后面试了第一种方法将中文名称改成 test.csv 发现是可以正常接收的,不会出现bin结尾的文件.
4.结论:
若是希望附件中名称带有中文,建议如下写法:
att1.add_header('Content-Disposition', 'attachment', filename='需要接收为的文件名.后缀')
5.实践
filename = os.path.basename(rp_file) # 动态获取文件名称
att.add_header('Content-Disposition', 'attachment', filename=filename) # 每次发送邮件使用最新的文件名称