Python+网易企业邮箱 做邮件自动分发的时候遇到的一些问题记录
我用python+企业网易邮箱做邮件自动分发的时候遇到了两大问题:一是Connection unexpectedly closed;二是收到的excel附件是.bin结尾的。花了一下午时间,终于弄明白怎么回事了。
目录
1 问题一: 关于Connection unexpectedly closed
1.1 问题出现原因
邮箱服务器地址与邮箱端口号不匹配
1.2 解决办法
- 1、找到你的网易企业邮箱的POP/SMTP/IMAP服务器地址。网易企业邮箱服务器地址与端口设置
进去输入你网易企业邮箱**@后面的部分**,会看到下面这些东东:
一般是SMTP协议+服务器地址+25端口。不行就挨个试一遍,总有一个是。 - 2、这是找网易企业邮箱和它的端口,二者对上,就能成功发送邮件了
2 问题二: 邮件发送成功了,但接收方收到的excel附件是.bin结尾的
2.1 问题出现的原因
文件名/文件内容中有中文,无法进行正常编码
2.2 解决办法
- 1、指定编码的时候将文件名中的中文换成英文
xlsxpart = MIMEApplication(open(file_path, 'rb').read())
xlsxpart.add_header('Content-Dispositon','attachment', filename='file.xls'))
绝大多数情况下这一步就够了,如果不行就试试第二步
- 2、make_header将文件内容及名称编码强转为utf-8
from email.header import make_header
excel_apart = MIMEApplication(open(file_path, 'rb').read())
excel_apart["Content-Type"] = 'application/octet-stream;name="%s"' % make_header([(file_name, 'UTF-8')]).encode('UTF-8')
excel_apart["Content-Disposition"] = 'attachment;filename= "%s"' % make_header([(file_name, 'UTF-8')]).encode('UTF-8')
转完之后应该就可以了