你想要的完整解决Python smtplib使用163发送邮件时出现 •554 DT:SPM错误smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp5,HdxpC

最近在学习Python于是自己写了个小脚本测试使用smtp发送邮件,一切ok后出现如下错误:

smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp1,GdxpCgCnKA4anORdnVRZAA--.986S2 1575263258,please see http://mail.163.com/help/help_spam_16.htm?ip=114.253.3.243&hostid=smtp1&time=1575263258')

意思就是发不了,错误代码554,内容为……这是网易给返回来的错误内容,我们进去康康
在这里插入图片描述
思路:
诶,有意思了,我们是垃圾邮件,或者病毒了,哈哈,病毒不可能了,我的发送文本为一段文字,没有大量脚本,应该不是误杀病毒(以前看过WAF防火墙,那个真可以把有大量脚本标签的内容拦截),那就是垃圾邮件,但是以前写过java的smtp用的也是网易163没问题,那也不是邮件过于简单的问题,于是看了很多其他网友的反馈:
https://blog.csdn.net/weixin_41789943/article/details/82348946
这篇里面提到将message中放置的From与To的格式调整正确,而且必须填写真实邮箱
在这里插入图片描述
然后就OK了,为什么?我们看看我之前此处的代码与成功后的:

# 之前的
message['From'] = Header("********<*********@163.com>", 'utf-8')  
message['To'] = Header("*******<*********@qq.com>", 'utf-8')  
# 成功后的
message['From'] = Header("********<*********@163.com>")  
message['To'] = Header("*******<*********@qq.com>")  

区别是差一个规定编码的部分,我们好心规定编码还成了问题?我们把这个message的相关部分打出来康康:

# 之前的
--===============1943985730==--

Content-Type: multipart/mixed; boundary="===============1943985730=="
MIME-Version: 1.0
From: ********<*********@163.com>
To: ********<*********@qq.com>
Subject: =?utf-8?b?UHl0aG9uIFNNVFAg6YKu5Lu25rWL6K+V?=
# 成功后的
--===============1943985730==--

Content-Type: multipart/mixed; boundary="===============1943985730=="
MIME-Version: 1.0
From: =?utf-8?q?***********=3C***********=40163=2Ecom=3E?=
To: =?utf-8?q?**********=3C**********=40qq=2Ecom=3E?=
Subject: =?utf-8?b?UHl0aG9uIFNNVFAg6YKu5Lu25rWL6K+V?=

你想要的完整解决Python smtplib使用163发送邮件时出现 •554 DT:SPM错误smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp5,HdxpC_第1张图片
你想要的完整解决Python smtplib使用163发送邮件时出现 •554 DT:SPM错误smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp5,HdxpC_第2张图片
我们看到这里心里大概就明白了两种写法的区别,在我们写上编码后我们发送到网易时它认为我们的邮箱名是无效的这是垃圾邮件(因为很多垃圾邮件就这么写,为了节省资源就给杀了),既然找到了问题的根本怎么解决就看自己的了~

你可能感兴趣的:(Python)