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 ...
随机推荐
- SpringBoot打包实现静态文件、配置文件、jar包分离
在pom文件里面添加 <plugins> <!--定义项目的编译环境--> <plugin> <groupId>org.apache.maven.plu ...
- JAVA实现调用默认浏览器打开网页
/** * @title 使用默认浏览器打开 * @param url 要打开的网址 */ private static void browse2(String url) throws Excepti ...
- nim_duilib(1)之第一个dui executable(including configure setting in vs2017)
before starting clone nim_duilib: https://github.com/netease-im/NIM_Duilib_Framework 迁出github的源码即可. ...
- 【LeetCode】1151. Minimum Swaps to Group All 1's Together 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 滑动窗口 日期 题目地址:https://leetco ...
- 【LeetCode】325. Maximum Size Subarray Sum Equals k 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 prefix Sum 日期 题目地址:https:// ...
- 【LeetCode】520. Detect Capital 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 循环判断三个条件 大写字母个数和位置判断 根据首字符 ...
- 【LeetCode】921. Minimum Add to Make Parentheses Valid 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址: https://leetcode. ...
- Codeforces 777D:Cloud of Hashtags(暴力,水题)
Vasya is an administrator of a public page of organization "Mouse and keyboard" and his ev ...
- 源码分析 SpringCloud 2020.0.4 版本 EurekaClient 的注册过程
1. 概述 老话说的好:要善于思考,有创新意识. 言归正传,之前聊了 Springboot 的启动过程,今天来聊聊 Eureka Client 的注册过程. 2. Eureka Client 的注册过 ...
- A Simple Framework for Contrastive Learning of Visual Representations
目录 概 主要内容 流程 projection head g constractive loss augmentation other 代码 Chen T., Kornblith S., Norouz ...