【python/mail】关于python发送邮件附件的神奇问题

Contents

关于python发送邮件附件的神奇问题

项目需要用python定时发送邮件。但是发现附件是中文文件名的xlsx文件, 客户收到了用网页版邮箱能正确显示,但是用outlook收邮件附件就变成000xxx.dat这个就很莫名了。

其实经过调查,问题出在对附件名字的乱码问题。 添加附件的时候增加utf8的编码就可以解决了。

with open(attachment_path, "rb") as attachment:
part = MIMEApplication(attachment.read(), Name=attachment_path)
new_file_name = Header(attachment_path, 'utf-8').encode()
part["Content-Disposition"] = f'attachment; filename="{new_file_name}"'
msg.attach(part)

居然就是这个简单的问题,python的email的lib没有做好国际化啊。