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 ...
随机推荐
- generating project in interactive mode
解决方案:加个参数 -DarchetypeCatalog=internal 让它不要从远程服务器上取catalog
- ACwing1208. 翻硬币
题目: 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如果 ...
- CMAKE为项目输出名添加后缀
概述 本文将介绍cmake配置动态库和可执行程序两种,使用cmake为其添加Debug和Release配置下的后缀 动态库 下面将介绍使用CMAKE_DEBUG_POSTFIX和CMAKE_RELEA ...
- 【LeetCode】926. Flip String to Monotone Increasing 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Prefix计算 动态规划 参考资料 日期 题目地址 ...
- 【LeetCode】388. Longest Absolute File Path 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述: 题目大意 解题方法 日期 题目地址:https://leetcode. ...
- 【剑指Offer】二叉搜索树的后序遍历序列 解题报告(Python)
[剑指Offer]二叉搜索树的后序遍历序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervi ...
- Mobile phones(poj1195)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 18453 Accepted: 8542 De ...
- hdu 1431 素数回文(暴力打表,埃托色尼筛法)
这题开始想时,感觉给的范围5 <= a < b <= 100,000,000太大,开数组肯定爆内存,而且100000000也不敢循环,不超时你打我,反正我是不敢循环. 这题肯定得打表 ...
- 教学日志:javaSE-java中的数据类型和运算符
一.java中的标识符 /* 标识符的命名规范: 硬性要求: 1.必须以字母._下划线.美元符$开头 2.其它部分可以是字母.下划线"_".美元符"$"和数字的 ...
- VMware15 虚拟机分别设置连接笔记本的WLAN和以太网双网络
VMware15 虚拟机分别设置连接笔记本的WLAN和以太网双网络 虚拟机:window 10 主机: window 10 VVmware有3种网络连接模式:桥接.NAT.主机模式,默认分别对应VMN ...