很多系统的设计是由用户通过邮箱进行账户注册,且在注册时对邮箱格式进行了必要的判断,以避免无效邮箱的注册,除非是需要接收邮箱验证码,否则随意填写个正确格式的邮箱这种事,就像学生欺骗老师作业做完了一样常见。特别是问卷调查中需要参与者填写自己邮箱时,避免垃圾邮件骚扰用个假邮箱。

在另外一些时候,当需要批量群发邮件时,除了基于邮箱格式的过滤,也需要过滤不存在的邮箱地址。

还有一些特殊的时候,针对某一个域名或系统,需要尝试探测下该域名下有哪些邮箱,从而获得必要的邮箱列表。

以上这些情况下,都不太适合通过直接向邮箱中投递邮件的方式来判断,所以本人做了这么个小工具,在不投递邮件的情况下检测邮箱地址是否真实。该程序是基于validate_email的python模块的优化、修改。

邮箱存在返回True,不存在则返回False。

功能就是这么的单调,原理却也没那么华丽,甚至可以手动完成检测操作。总共四步:

1、通过nslookup获取邮箱地址中主域名的MX记录;

2、用SMTP扩展协议的ehlo与MX服务器建立亲切而不失友好的连接;

3、使用mail FROM:<''>向MX服务器指定发件人的身份是空;

4、通过rcpt TO:<'email address'>命令查看服务器的返回结果,如果邮箱地址存在,则返回代码是250,如果不存在,则通常情况下返回550,也有个别邮件服务商返回554。

同一个邮件服务商的MX记录有多个,部分邮件服务商的MX服务器会出现对同一个邮箱地址返回结果不同的情况,实际上,倘若其中一个MX服务器返回邮箱不存在,则该邮箱不存在。这是唯一一个需要说明的点。

工具源码可点击原文链接获取,使用Python 3.6.4编写,限于DNS模块的安装,因此只能在Linux环境中执行。

python判断邮箱格式是否正确_ValidEmail:邮箱真实性检测工具相关推荐

  1. python判断邮箱格式是否正确_【案例】Python - 用正则判断邮箱是否合法

    1>用正则判断QQ邮箱是否合法 这里QQ邮箱指QQ号+@qq.com结尾 分析:1.QQ最短5位最长11位数 2.以@qq.com结尾 3.不能以0开头 直接上代码 importredefis_ ...

  2. html正则邮箱格式,JS正则表达式判断邮箱格式是否正确

    用indexOf()函数也可判断邮箱格式中是否可以包含"@",看上去似乎可以判断成功了,但稍懂点JS的一看就知道问题出在哪儿?就连我这JS菜鸟也发现问题了. 举个例子,一般的邮箱格 ...

  3. 如何判断用户输入的邮箱格式是否正确?

    用户名@网站名-例sina.com.tom.com.yahoo.com.cn--(有些小网站的邮箱在填资料时不认,所以推荐用网站的邮箱) 一般都是用<正则表达式>来判断. 什么是正则表达式 ...

  4. 输入一个QQ邮箱或者网易邮箱,判断其格式是否正确 要求:长度不能超过15,@前面不能用字母 正确格式2156636@qq.com

    package com.coding.syudy05; /*** 输入一个QQ邮箱或者网易邮箱,判断其格式是否正确* 要求:长度不能超过15,@前面不能用字母* 正确格式2156636@qq.com* ...

  5. 判断邮箱 格式是否正确

    /练习:判断邮箱格式是否正确 //1.有且只能有一个@ contains @ indexof @=lastindexof //2.不能以@开头 indexof != 0 //3.@之后至少有一个. / ...

  6. php7判断邮箱格式是否正确,利用php实现验证邮箱格式是否正确

    验证邮箱格式是否正确可以通过filter_var函数来实现. 函数介绍: filter_var() 函数通过指定的过滤器过滤一个变量. 语法:filter_var(variable, filter, ...

  7. python实现检查邮箱格式是否正确,并检查提交的文件格式是否正确

    代码实现功能: 输入邮箱账号,检查邮箱格式是否正确,是否含有@字符,且以 .com结尾 输入提交文件名,检查提交的文件格式是否正确,是否以 .py结尾 email = input("Plea ...

  8. js判断手机,邮箱格式是否正确

    在web开发中少不了手机,邮箱等联系方式,所以在开发中需要验证手机,邮箱的格式.下面是我在项目中使用的校验 手机校验:(现在手机开头格式,如以后新增开头格式,可增加修改格式 <span styl ...

  9. 验证邮箱格式html代码,jquery验证邮箱格式是否正确实例讲解

    我们来看看都有哪些邮箱: 我们如果一个个的邮箱进行判断,显然是不可能的了. -个完整的Internet邮件地址由以下两个部分组成,格式如下:登录名@主机名.域名中间用-个表示"在" ...

最新文章

  1. 1:1 人脸比对 开源_Hacktoberfest:我的开源门户
  2. 美团某程序员哀叹:能力很强,却因为不会“向上管理”而惨遭被裁!怎么办?...
  3. 将图片缩放成指定尺寸
  4. 前端学习(2008)vue之电商管理系统电商系统之获取静态属性列表
  5. C++设计模式-中介者模式
  6. python asyncio和celery对比_如何将Celery与asyncio结合起来?
  7. iOS convertRect:view.frame toView: x 异常翻倍?
  8. python创建应用程序窗口_如何设置pythonwxwidgets应用程序窗口的类名?
  9. keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)
  10. 拓端tecdat|GARCH(1,1),MA以及历史模拟法的VaR比较
  11. 分析Python7个爬虫小案例(附源码)
  12. 【学习】无刷直流电机的基本结构及工作原理
  13. 2个相同的 stm32 can通讯不成功_CAN通讯系列--CAN通讯简介1
  14. 按键精灵定义全局变量_按键精灵2014全局数组变量传递(支持静态与动态)V2
  15. python元组可以排序吗,关于python:如何对列表/元组进行排序(list/tuple)?
  16. 计算机表格单元格合并,excel表格数据拆分和合并单元格-excel中如何将已经合并的单元格拆分,并将该单元格......
  17. 潘多拉盒子 使用 hd-idle 硬盘休眠设置
  18. 矩阵的三角分解法之LU分解之Doolittle分解
  19. 导入项目出现: Unable to resolve target ‘android-10′ 解决办法
  20. 「开机自启」macOS如何关闭开机自启动软件?

热门文章

  1. 核心网,骨干网,支撑网,接入网的区别和联系
  2. 邯郸学院学计算机宿舍,邯郸学院的住宿条件怎麽样,每个宿舍有的卫生间和洗澡的地方吗...
  3. 涂磊学计算机的为什么能进传媒岗位,涂磊作为目前的当红主持人,但是他的年收入却让人咂舌...
  4. VAE 模型基本原理简单介绍
  5. ubuntu安装ssh服务器
  6. 勒索病毒横行下设备该如何进行加密防护
  7. 1.15链界观区块链资讯
  8. 一口气说完MR、Storm、Spark、SparkStreaming和Flink
  9. 计算机音乐制作专业大学排名,音乐研究生院校排名
  10. JVM和数据库调优方案