python2.7发送邮件失败之——邮箱安全问题
使用python2.7发送邮件,通过脚本调试,脚本运行通过成功发出了邮件,但是目标邮箱qq没有收到。
刚开始怀疑脚本问题,上网查找资料后,发现邮箱发送成功后目标邮件没有收到有可能有以下几种原因:
1、邮件正在传递途中。
Email的发送过程不是同步的,各个传递中继处理需要时间;如果发送方服务器或者收信方服务器短时间内囤积了大批量邮件传递任务,也会有一定的时间去排队。这个周期最长是三天,如果三天内投递不成功,发件箱会有退信通知的。
2、邮件在多个服务器或网段之间传递,延迟或拒绝投递。
不同邮件域名或邮件服务器直接Email传递有一个过程,这个一般要几个小时甚至更长时间。如果这些服务器不在同一个网段,那么这封Email的传递过程肯定不是即时的。例如从Gmail邮箱给QQ邮箱发送邮件,经常会遇到这个情况,特别是用软件做邮件群发的过程中,短时间内的大量邮件会造成网络堵塞,从而降低了传递速度;而这个时候用网页直接发送,选择的路由与客户端发送的路由是不同的,速度则会提高,没有可比性。
另一方面,服务器也会决绝投递跨网域的Email。比如用QQ邮箱去发送QQ邮箱,很快就能收到了,而用sina邮箱通过SMTP去发送Email给QQ邮箱,数量稍微多一些或者内容稍有重复,新浪邮箱服务器往往拒绝投递而不做任何通知;但也不全部是这样的,比如Gmail邮箱去发送QQ邮件,如果拒绝投递,会Email通知你。
3、收信服务器或者收件人直接拒收或丢弃。
这种情况有很多种,这里着重说一下黑名单机制。服务器端要维护一个域名黑名单,对于每封过来的邮件,判断其所在域是否在这个黑名单中,形象的说,你的邮件地址是xxx@abot.cn,那么所有来自@后面的这个段的Email,都会被Block掉,但这不是等价的,比如你的Email地址是xxx@qunfa.abot.cn,根据算法,同样符合abot.cn这个黑名单规则。
另一种就是内容过滤,比如网易系列邮箱经常会提高安全级别,将来自网易系列邮箱(163、126、yeah等)之外的,内容中包含附件、http字样的内容全部拒收或直接丢弃。21cn、sohu之类的收件服务器对此过滤较为严格。
4、进入垃圾邮件了。
这种情况是很常见的,如果某个客户端发送频率过高,或者包含大量可疑为垃圾邮件内容的关键字,甚至收件人将你的email地址列入黑名单,你发过去的邮件,都会被判断垃圾邮件。
5、发件服务器(SMTP服务器)不通知的情况下丢邮件。
这种情况在新浪和网易邮箱中最为常见,包括sina.com和sina.cn,以及163、126、yeah等,这几个邮箱发出去的邮件。这类SMTP服务器认为某个账号可能群发邮件时候,会悄悄放弃传递,而告之用户投递成功,做法与Gmail相反。
6、被发送方客户端或者服务器的杀毒软件或者防火墙过滤掉。
客户端电脑的情况:如果客户端安装了瑞星、诺顿、卡巴斯基等杀毒软件或者防火墙之类的软件,并且设置了严格的网络过滤规则,他们可能过滤掉正常的电子邮件。
服务前段过滤的情况:如果服务器端对内容检查比较严格,通过其SMTP传递Email会变得非常困难,比如sohu.com以及21cn.com等邮箱,虽然是开通SMTP服务了,但是他们的杀毒软件检查太严格,即使是正常的邮件内容,也很难通过他们传递出去。
我判断应该是目标邮箱安全方面的问题,于是我查看我的发送邮箱,发现发送出去的邮件真的是由于安全问题被退回,信息如下:

我试着更改了另一个目标邮箱,目标邮箱成功收到邮件:

实现代码如下:
from email.header import Header
from email.mime.text import MIMEText
import smtplib
#发送邮箱
sender='yq_test@126.com'
password='123456'
#接受邮箱
receiver='41618174@qq.com'
smtpserver='smtp.126.com'
subject='python email test'
msg=MIMEText('下雨了,大家关好窗户','plain','utf-8')
msg['Subject']=Header(subject,'utf-8')
msg['From']=sender
msg['to']=receiver
try:
smtp=smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(sender,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
print "邮件发送成功"
except smtplib.SMTPException:
print "Error:无法发邮件"
各位看官,看完后不要忘了为我乐于分享的精神点个赞哦
python2.7发送邮件失败之——邮箱安全问题的更多相关文章
- python2.7发送邮件失败之——代码问题
使用python2.7发送邮件,代码如下: from email.header import Headerfrom email.mime.text import MIMETextimport smtp ...
- python2.7发送邮件失败之——SMTPAuthenticationError问题
使用python2.7发送邮件,代码如下: from email.header import Headerfrom email.mime.text import MIMETextimport smtp ...
- python通过SMTP发送邮件失败,报错505/535
python通过SMTP发送邮件失败:错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission') 我们使用pyth ...
- (转)解决jdk1.8中发送邮件失败(handshake_failure)问题
解决jdk1.8中发送邮件失败(handshake_failure)问题 作者 zhisheng_tian 2016.08.12 22:44* 字数 1573 阅读 2818评论 6喜欢 9 暑假在家 ...
- Linux SendMail发送邮件失败诊断案例(四)
最近又碰到一起Linux下SendMail发送邮件失败的案例,邮件发送后,邮箱收不到具体邮件, 查看日志/var/log/maillog 发现有"DSN: User unknown" ...
- Jenkins 邮件配置 || Jenkins 发送邮件失败,提示:Error sending to the following VALID addresses
jenkins---系统管理---系统设置 在Jenkins URL下填写URL链接 在系统管理员邮件地址下填写发件邮箱,这将是以后发送邮件通知的发件人 如果下载了外部邮件通知 配置一下SMTP se ...
- JDK1.8导致发送邮件失败
问题:本地JDK1.6测试可以发送邮件,但是linux上jdk1.8发送邮件失败.报错: Sending the email to the following server failed : smtp ...
- Linux SendMail发送邮件失败诊断案例(三)
一Linux服务器突然发送不出邮件,检查了很多地方都没有发现异常,检查/var/log/maillog发现如下具体信息: Apr 12 00:36:04 mylinux sendmail[4685]: ...
- C# 使用 SmtpClient.SendAsync 方法发送邮件失败,总是返回 Cancelled
问题: 调用 SmtpClient.SendAsync,在 SendCompleted 的回调函数里面总是获取到 e.Cancelled 为 true. 后来测试了一下,相同的代码,只是把 SmtpC ...
随机推荐
- house of force----gyctf_2020_force!!
做这道题前线学习一下house of force的用法 Linux下堆溢出利用2-House of force基本原理_haibiandaxia的博客-CSDN博客 老样子例行检查(这里我就不放了) ...
- [BUUCTF]PWN——pwnable_hacknote
pwnable_hacknote 附件 步骤: 例行检查,32位程序,开启了nx和canary保护 本地试运行看一下大概的情况,熟悉的堆的菜单 32位ida载入 add() gdb看一下堆块的布局更方 ...
- 记一次AWD
有幸bjx师傅又让我参加了一次awd,算是第二次体验awd,又感觉学习到了很多东西. 第一次打这种模式的时候,我几乎什么都没有做,就给师傅们下载文件,上传文件了.(太菜了) 昨晚分的组,发现没有人是p ...
- 一文详解TDSQL PG版Oracle兼容性实践
TDSQL PG版分布式关系型数据库,是一款同时面向在线事务交易和MPP实时数据分析的高性能HTAP数据库系统.面对应用业务产生的不定性数据爆炸需求,不管是高并发交易还是海量实时数据分析,TDSQL ...
- CF753A Santa Claus and Candies 题解
Content 圣诞老人有 \(n\) 颗糖果,他想把这些糖果分发给一些小孩子,并想要每个孩子都能得到不同的糖果数目.求能得到糖果的孩子的最大数目,以及他们各自得到的糖果数. 数据范围:\(1\leq ...
- LuoguP7259 [COCI2009-2010#3] SORT 题解
Content 请编写一个"频率排序器".输入一个 长度为 \(n\) 的数列 \(A=\{a_1,a_2,\dots,a_n\}\),要求: 按照每个数的出现次数降序排列. 如果 ...
- 使用.NET 6开发TodoList应用(5)——领域实体创建
需求 上一篇文章中我们完成了数据存储服务的接入,从这一篇开始将正式进入业务逻辑部分的开发. 首先要定义和解决的问题是,根据TodoList项目的需求,我们应该设计怎样的数据实体,如何去进行操作? 长文 ...
- 直接在filter过滤器代码里加org.apache.struts2.ServletActionContext.getRequest()会出现空指针情况
直接在filter过滤器代码里加org.apache.struts2.ServletActionContext.getRequest()获得request对象请注意啦,会出现空指针情况 请关注此处:
- JAVA将Object对象转byte数组
/** * 将Object对象转byte数组 * @param obj byte数组的object对象 * @return */ public static byte[] toByteArray(Ob ...
- VS2015 up3激活key
密钥 专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2 企业版:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV