`
wkf41068
  • 浏览: 458293 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java处理邮箱地址是否真实存在的实例

 
阅读更多

1.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个
  服务器
2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返 
  回状态的三位数字代码
3.SMTP在TCP协议25号端口监听连接请求
4.连接和发送过程
SMTP协议说复杂也不复杂(明明带有“简单”这个词嘛),说简单如果你懂得Sock。不过现在只是我们利用的就是第一条中说的,从客户机传输到服务器,当我们向一台服务器发送邮件时,邮件服务器会首先验证邮件发送地址是否真的存在于本服务器上。
操作的步骤如下:
连接服务器的25端口(如果没有邮件服务,连了也是白连)
发送helo问候
发送mail from命令,如果返回250表示正确可以,连接本服务器,否则则表示服务器需要发送人验证。
发送rcpt to命令,如果返回250表示则Email存在
发送quit命令,退出连接


    private static String[] removeInvalidateAddress(String[] addresses, String mailFrom)
    {	
    	ArrayList<String> validateAddresses = new ArrayList<String>();
    	String normalAddress = null;
    	int code;
    	
    	SMTPTransport smptTrans = null;
    	if(StringUtils.isEmpty(mailFrom) || null == addresses)
    	{
    		return new String[0];
    	}
    	String sendCmd = "MAIL FROM:" + normalizeAddress(mailFrom);
    	try
    	{
	    	smptTrans = (SMTPTransport)sendSession.getTransport("smtp");
	    	smptTrans.connect();
	    	code = smptTrans.simpleCommand(sendCmd);
	    	if(code != 250 && code != 251)
	    	{
	    		logger.error("send from invalidate" + mailFrom);
	    	}
	    	else
	    	{
	    		for(String address : addresses)
	        	{
	    			normalAddress = normalizeAddress(address);
	    			String cmd = "RCPT TO:" + normalAddress;
					code = smptTrans.simpleCommand(cmd);
					if(code == 250 || code == 251)
					{
						validateAddresses.add(address);
					}
	        	}
	    	}
    	}
    	catch(MessagingException e)
    	{
    		logger.error("Validate mail address error. send from " + mailFrom, e);
    	}
    	
    	String[] result = validateAddresses.toArray(new String[validateAddresses.size()]);
    	return result;
    }
    
    private static String normalizeAddress(String addr) 
    {
    	if ((!addr.startsWith("<")) && (!addr.endsWith(">")))
    	    return "<" + addr + ">";
    	else
    	    return addr;
    }

分享到:
评论

相关推荐

    java邮件开发实例

    ### Java邮件开发实例知识点 #### 一、Java邮件发送机制概览 在Java开发中,邮件功能是非常实用的一项技术,可以用于用户注册验证、找回密码等场景。本篇将通过一个具体的实例——“Java邮件开发实例”,来详细...

    java源码包---java 源码 大量 实例

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java发送邮件及邮件附件代码实例.zip

    下面是一个简单的Java代码实例,展示了如何通过SMTP发送带有附件的邮件: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class EmailSender { public static...

    基于Java的实例源码-邮件检验库 JEmval.zip

    Java邮件检验库 JEmval 是一个专门为Java开发者设计的实用工具,用于验证电子邮件地址的有效性。这个库提供了高效且准确的验证机制,确保输入的邮箱地址符合标准的格式,从而提高应用程序的数据质量。在实际开发中,...

    Java发送邮件的实例(三种方式)实现代码

    Java发送邮件是软件开发中常见的功能,特别是在自动化通知、用户注册验证或客户服务中。本教程将详细介绍三种在Java中发送邮件的方法,每种方法都...记得在生产环境中配置真实的SMTP服务器信息,确保邮件能够成功发送。

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    java源码包3

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java源码包2

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java实现发送邮件功能demo

    JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,包括发送、接收、管理邮件等。本文将深入探讨如何使用JavaMail API在Java应用程序中实现发送邮件的功能,同时也会涉及验证码验证以及网页版...

    h_JAVA 2应用编程150例.rar

    实例122 基于EJB的真实世界模型 433 实例123 EJB的商业应用——定购单 447 第11章 Java 2 Platform Micro Edition编程 475 实例124 插入和替换表单元素 476 实例125 使用线程与定时 478 实例126 J2ME绘图 480 实例...

    邮件合并实例步骤&邮件合并实例步骤

    在表中要分别包括职工的姓名、组别、编号和照片,姓名、组别可以直接从单位数据库里导入,姓名、编号的排列顺序要和前面照片的编号顺序一致,照片一栏并不需要插入真实的图片,而是要输入此照片的磁盘地址,比如“E:...

    java源码包4

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    邮箱注册实例

    在这个实例中,我们可能能学到如何使用常见的编程语言(如Python、Java或JavaScript)以及相关的库(如SMTP库来发送邮件,HTTP库来处理请求)来实现这些功能。此外,我们还将接触到数据库操作,用于存储和检索验证码...

    java应用软件程序设计

    505 实例137 获取本机的Mac地址 508 实例138 获取Java系统信息 509 实例139 控制Java与C++程序的通信 510 实例140 访问Windows注册表 514 第13章 Java配置与集成 523 实例141 J2SDK的安装配置 524...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    Java mail 发送邮件的具体实例

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和处理邮件。在Java应用中,我们通常使用Java Mail API来实现电子邮件功能,包括创建、发送带有附件的邮件、设置邮件主题和内容等。...

    freemarker实例,真实

    通过这个简单实例,你可以了解到如何在Java项目中配置和使用Freemarker,以及如何构建和处理数据模型。随着深入学习,你将掌握更多高级特性,如宏、指令和自定义函数,从而更好地利用Freemarker来构建复杂的应用。

Global site tag (gtag.js) - Google Analytics