问题描述:
报错信息
OSError: [Error 101] Network is unreachable.
具体描述: 服务器段发送邮件,在客户端没有接受到。 服务器端 send_mail函数已完成,推测问题出在网络传输阶段,可能是端口导致。
查找原因:
首先检查防火墙是否打开对应端口
sudo ufw status
查看sudo ufw allow [port]
开启端口sudo ufw reload
重新加载防火墙
由于使用的第三方的STMP服务器,使用的电子邮件安全协议是SSL
(安全套接字)TLS
(传输层安全) 以及STARTTLS
(对不安全的连接进行升级(使用SSL或TLS))
根据加密方式不同,端口也不同:
- SSL/TLS加密 使用端口
465
(出错前使用的加密方式)- SRARTTLS加密 使用端口
587
使用
telnet ip port
命令查看 此处ip地址是outlook的发信服务器stmp.live.com
或stmp.office365.com
telnet stmp.live.com 465
和telnet stmp.office365.com 465
均连接失败。(猜测outlook禁止该端口使用)
telnet stmp.live.com 587
和telnet stmp.office365.com 587
连接成功。
解决
将网站中的加密方式更改为
STARTTLS
加密,并使用端口587
后,邮件成功发送。