消息邮件java接口使用说明

合集下载

Android平台下的邮箱客户端的设计与实现DOC

Android平台下的邮箱客户端的设计与实现DOC

摘要Android是Google公司发布的智能手机平台,该平台具有开放、应用程序平等、应用程序间无界限和方便快速的应用程序开发等优点,成为当今最流行的手机开发平台之一,是当今软件行业的一股重要力量。

本文是利用JavaMail在Android平台上开发邮件客户端,介绍了Android相关知识,JavaMail的使用,最后分析了Android邮件客户端的基本功能和实现模块,并对其中用到的关键方法进行了详细的描述。

在开发过程中,运用了开发工具Android Studio和Android SDK。

设计了邮件收发的客户端。

系统主要分为五个模块:登陆、发邮件、收邮件、配置和通讯录。

该系统为用户利用手机Email进行通讯提供了便利。

关键词: Android Android Studio Java Mail12目录第一章绪论 (1)1.1研究内容 (1)1.2研究意义 (1)1.3研究现状和发展趋势 (1)1.4开发环境 (1)1.4.1 Android开发环境介绍 (1)1.4.2 Android开发平台搭建 (2)第二章Android的相关技术介绍及分析 (3)2.1 Android系统架构研究 (3)2.2 Android架构分析 (4)2.2.1应用程序框架 (4)2.2.2类库 (5)2.2.3 Android运行时组件 (6)2.3 Android应用的构成和工作机制 (6)第三章JavaMail API研究 (7)3.1 JavaMail API简介 (7)3.2相关协议一览 (7)3.3 JavaMail安装 (8)3.4 JavaMail API详解 (8)第四章软件架构及系统用例图 (13)4.1系统结构 (13)4.2系统总体用例 (13)4.3程序功能框图 (14)第五章程序开发 (15)5.1文件结构与用途 (15)5.2程序主要代码 (17)5.3系统测试 (26)第6章结论 (33)致谢 (35)参考文献 (37)1绪论第一章绪论1.1研究内容本论文目的在于利用java语言在Android平台下的邮件客户端,让用户可以方便的管理邮件服务器上的自己的邮件,方便地发送邮件。

java的eventbus案例

java的eventbus案例

java的eventbus案例EventBus是一种用于组件间通信的异步事件发布/订阅机制。

它可以帮助开发者实现松耦合的组件间通信,使代码更加清晰、灵活和可维护。

下面是一些使用Java的EventBus库的案例,展示了它的应用场景和用法。

1. 用户注册事件假设我们有一个用户注册功能,当用户成功注册时,需要发送一个注册成功的事件通知其他组件。

我们可以定义一个名为UserRegisteredEvent的事件类,包含注册用户的信息。

注册成功后,通过EventBus发布这个事件,其他组件可以订阅该事件并执行相应的操作,比如发送邮件通知管理员、添加用户到推荐列表等。

2. 消息推送在一个即时通讯应用中,当用户发送一条消息时,我们可以使用EventBus来实现消息的推送。

当接收到用户发送的消息后,将消息封装成一个名为MessageEvent的事件,通过EventBus发布该事件。

其他组件可以订阅该事件并将消息推送给对应的用户。

3. 异步任务处理假设我们有一个后台任务,需要异步执行一些耗时操作,比如发送邮件、生成报表等。

我们可以使用EventBus来实现任务的异步处理。

当后台任务完成后,通过EventBus发布一个名为TaskCompletedEvent的事件,其他组件可以订阅该事件并执行相应的操作,比如将结果存储到数据库、发送通知等。

4. UI更新在一个图形界面应用中,当某个数据发生变化时,我们可以使用EventBus来实现UI的更新。

当数据发生变化后,通过EventBus 发布一个名为DataChangedEvent的事件,UI组件可以订阅该事件并更新界面显示。

5. 插件扩展在一个可插拔的应用中,我们可以使用EventBus来实现插件的扩展。

当插件被加载时,通过EventBus发布一个名为PluginLoadedEvent的事件,其他插件可以订阅该事件并执行相应的操作,比如注册插件的菜单、添加插件的功能等。

JavaWeb(十三)使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

JavaWeb(十三)使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

JavaWeb(⼗三)使⽤javamail进⾏发送邮件,(使⽤QQ,163,新浪邮箱服务器) 加油加油。

--WZY⼀、发送邮件的原理 在了解其原理之前,先要知道两个协议,SMTP和POP3 SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议,发送邮件的协议,默认端⼝,25 POP3:Post Office Protocol 3,即邮局协议,接收邮件的协议,默认端⼝,110 知道了这两个协议,下⾯来说说邮件发送和接收的原理图,分两种,相同邮件(QQ邮箱给QQ邮箱)和不同邮件(QQ邮箱给163邮箱)是不⼀样的。

解释: 为了⽅便起见,将新浪邮箱,list@称为⽤户A,将搜狐邮箱,wangwu@ 称为⽤户B ⽤户A(新浪邮箱,list@)给⽤户B(搜狐邮箱,wangwu@)发送⼀封邮件,那么整个过程就为图中的实线部分,⽤户A通过OutLook(浏览器或者客户端)登录⾃⼰的邮箱帐号,编写邮件,使⽤Smtp协议发送给Sina的邮件服务器中的Smtp服务器(专门⽤来发送的服务器),然后在通过SMTP协议,传输给Sohu的邮件服务器中的Smtp服务器,然后通过Sohu的Smtp服务器将邮件发送给⽤户B的存储设备进⾏存储(每个⽤户都会有⼀个存储空间⽤来存储邮件的),到这⾥,⽤户A就相当于发送成功了,因为已经到达了⽬的地,如果B⽤户需要查看邮件内容,必须通过POP3服务器将从⾃⼰的存储设备中拿到,然后返回到浏览器或者客户端中显⽰。

⽤户B给⽤户A发送⼀封邮件,那么整个过程就为图中的虚线部分,是和A给B发⼀样的步骤 ⽤户A给⼀个同样使⽤新浪邮箱的⽤户C发送⼀封邮件,那么其过程就简单的多了,先通过Smtp服务器,然后smtp服务器会将其发送到⽤户C的存储设备上,A发送邮件就成功了,⽤户C要显⽰⾃⼰邮箱中的邮件,那么就通过POP3服务器从⾃⼰存储设备中拿取所有邮件进⾏查看。

⼆、通过Java代码实现发送邮件 2.1、准备jar包 核⼼:mail.jar 依赖:activation.jar,邮件需要发送附件时使⽤ 2.2、使⽤163邮箱发送邮件 2.2.1、⾸先在163邮箱中注册⼀个帐号。

J2EE的核心技术

J2EE的核心技术

J2EE的核心技术J2EE为设计、开发、装配和部署企业级应用程序提供了一个基于构件的解决方案。

使用J2EE可以有效地减少费用,快速设计和开发企业级的应用程序。

J2EE平台提供了一个多层结构的分布式的应用程序模型,该模型具有重用构件的能力、基于XML的数据交换、统一的安全模式和灵活的事务控制。

使用J2EE不仅可以更快地发布新的解决方案,而且独立于平台的特性让使用J2EE的解决方案不受任何提供商的产品和API的限制。

用户可以选择最合适自己的商业应用和所需技术的产品和构件。

(1)EJB。

EJB是Java服务器端的构件模型。

EJB容器作为EJB 构件的执行环境,提供服务器端的系统级功能,包括线程管理、状态管理和安全管理等。

EJB定义了访问构件服务的分布式客户接口模型,通过RMI-IIOP(Java Remote Method Invocation-Internet Inter-ORB Protocol),EJB可以同COBRA对象进行互操作。

使用Java开发的EJB 具有一次编写到处运行的优点,按照标准开发的EJB构件可以部署到任何一个支持EJB标准的应用服务器中。

使用EJB开发企业应用,可以缩短开发周期,开发人员只需要将注意力集中在业务逻辑的实现上,底层服务完全由EJB容器提供。

使用EJB开发的业务逻辑部分具有很好的移植性,不需要更改EJB的代码,开发人员能够将EJB从一种操作环境移植到另一种操作环境。

(2)JDBC。

JDBC是Java语言连接数据库的标准,从免费的MySQL 到企业级的DB2和Oracle, JDBC都提供了很好的接口。

JDBC API有两个部分,一个用来访问数据库的应用程序级的接口,另一个用来将JDBC驱动整合到J2EE平台中的服务提供商接口。

(3)Java Servlet(Java服务器端小程序)。

在Servlet技术中封装了HTTP协议,开发者不需要处理复杂的网络连接和数据包,就可以扩展Web服务器的功能。

GAE--java使用入门

GAE--java使用入门

简介欢迎使用Google App Engine!创建App Engine 应用程序非常简单,只需几分钟时间,而且可以免费开始使用:立即上传您的应用程序并与用户共享,不需要支付费用也不需要承担什么义务。

Google App Engine 应用程序可用Java 或Python 编程语言编写。

本辅导手册涉及Java。

如果您更习惯使用Python 来构建应用程序,请参阅入门指南:Python。

在本辅导手册中,您将学习如何:∙使用标准Java 网络技术(如servlet 和JSP)构建App Engine 应用程序∙使用和不使用Eclipse创建App Engine Java 项目∙使用Eclipse Google 插件进行App Engine 开发∙将App Engine 数据存储区和Java 数据对象 (JDO) 标准接口配合使用∙将App Engine 应用程序与Google 帐户集成以进行用户验证∙将应用程序上传到App Engine在本辅导手册结束前,您将实现一个可运行的应用程序:可让用户发布消息到公共留言板的简单留言簿。

Java 软件开发工具包及相关组件。

继续转至安装Java SDK。

安装Java SDK您可以使用App Engine Java 软件开发工具包(SDK) 开发和上传Google App Engine 的Java 应用程序。

SDK 包含网络服务器软件,您可在自己的计算机上运行该软件以测试您的Java 应用程序。

服务器可模拟所有的App Engine 服务,其中包括数据存储区的本地版本、Google 帐户以及使用App Engine API 从您的计算机抓取网址和发送电子邮件的功能。

Engine 上运行时,它将使用Java 6 虚拟机(JVM) 和标准库运行。

理想情况下,您应使用Java 6 编译和测试应用程序,以确保本地服务器的工作方式与App Engine 相似。

对于不易获得Java 6 的开发人员(如使用Mac OS X 的开发人员),App Engine SDK 也兼容Java 5。

使用java发送短信和邮件

使用java发送短信和邮件

使⽤java发送短信和邮件(1)发送短信1.1在中国⽹建SMS上注册⼀个⽤户名,并获取短信密钥(⾮登录密码)1.2代码import java.io.IOException;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.HttpException;import ValuePair;import mons.httpclient.methods.PostMethod;public class SendMessage {/*** @param args* @throws IOException* @throws HttpException*/public static void main(String[] args) throws HttpException, IOException {HttpClient client=new HttpClient();PostMethod post=new PostMethod("");//在头⽂件中设置转码post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");NameValuePair[] data={new NameValuePair("Uid","⽹建注册⽤户名"),new NameValuePair("Key","短信密钥"),new NameValuePair("smsMob","接收号码"),new NameValuePair("smsText","短信内容")};post.setRequestBody(data);client.executeMethod(post);Header[] headers=post.getRequestHeaders();int statusCode=post.getStatusCode();System.out.println("statusCode:"+statusCode);for(Header h:headers){System.out.println(h.toString());}String result=new String(post.getResponseBodyAsString().getBytes("gbk"));System.out.println(result);post.releaseConnection();}1.3注意需要引⼊包:commons-logging-1.1.1.jar、commons-httpclient-3.1.jar、commons-codec-1.4.jar1.4StatusCode说明:短信发送后返回值说 明-1没有该⽤户账户-2接⼝密钥不正确不是账户登陆密码-21MD5接⼝密钥加密不正确-3短信数量不⾜-11该⽤户被禁⽤-14短信内容出现⾮法字符-4⼿机号格式不正确-41⼿机号码为空-42短信内容为空-51短信签名格式不正确接⼝签名格式为:【签名内容】-6IP限制⼤于0短信发送数量2、发邮件2.1smtp验证类import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class SmtpAuthenticator extends Authenticator {String username=null;String password=null;public SmtpAuthenticator(String name,String password) {super();ername=name;this.password=password;}public PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(ername, this.password);}}2.2发邮件的⼯具类import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Authenticator;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class JavaMailSendUtil {public void sendMail(String subject,String from,String[] to,String test,String[] filenames,String mineType){try {Properties props=new Properties();String smtp="";//设置发送邮件所⽤到的smtpString servername="188********@";String serverpassword="************";Session mailSession=null;MimeMessage mimeMsg=null;props=ng.System.getProperties();props.put("mail.smtp.host", smtp);//设置SMTP主机props.put("mail.smtp.auth", "true");//是否到服务器⽤户名和密码验证//到服务器验证发送的⽤户名和密码是否正确SmtpAuthenticator myEmailAuther=new SmtpAuthenticator(servername, serverpassword);//设置邮件会话注意这⾥讲认证信息放进了Session的创建参数⾥mailSession=javax.mail.Session.getInstance(props,(Authenticator)myEmailAuther);//设置传输协议javax.mail.Transport transport=mailSession.getTransport("smtp");//设置from、to等信息mimeMsg=new javax.mail.internet.MimeMessage(mailSession);if(from!=null&&!from.equals("")){InternetAddress sendFrom=new InternetAddress(from);mimeMsg.setFrom(sendFrom);//设置发送⼈地址}InternetAddress[] sendTo=new InternetAddress[to.length];for(int i=0;i<to.length;i++){System.out.println("发送到:"+to[i]);sendTo[i]=new InternetAddress(to[i]);}mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject,"gb2312");MimeBodyPart messageBodyPart1=new MimeBodyPart();messageBodyPart1.setContent(test,mineType);//附件传输格式Multipart multipart=new MimeMultipart();multipart.addBodyPart(messageBodyPart1);for(int i=0;i<filenames.length;i++){MimeBodyPart messageBodyPart2=new MimeBodyPart();String filename=filenames[i].split(";")[0];System.out.println(filename);String displatname=filenames[i].split(";")[1];//得到数据源FileDataSource fds=new FileDataSource(filename);//BodyPart添加附件本⾝messageBodyPart2.setDataHandler(new DataHandler(fds));//BodyPart添加附件⽂件名messageBodyPart2.setFileName(MimeUtility.encodeText(displatname));multipart.addBodyPart(messageBodyPart2);}mimeMsg.setContent(multipart);//设置信件头的发送⽇期mimeMsg.setSentDate(new Date());mimeMsg.saveChanges();//发送邮件Transport.send(mimeMsg);transport.close();System.out.println("消息发送成功");} catch (Exception e) {// TODO: handle exception}}}2.3测试类public class TestMailSend {/*** @param args*/public static void main(String[] args) {String title="测试邮件";String from="188********@";String sendTo[]={"1245226995@","jlsong186@"};String content="just test java send mail<br><a href=\"\">My blog</a>"; String fileNames[]={"F:\\068.JPG;068.JPG"};JavaMailSendUtil test=new JavaMailSendUtil();try {test.sendMail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312");} catch (Exception e) {e.printStackTrace();}}}。

JavaMail概述

JavaMail概述

JavaMail概述J avaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。

它是Sun 公司发布的用来处理email的API,是一种可选的、用于读取、编写和发送电子消息的包(标准扩展)。

用户可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

Java Mail是JavaEE平台提供的邮件API。

使用这套API,可以轻松实现邮件的创建,发送和接受。

1.什么是E-mailE-mail是用户间或应用程序间交换信息的Internet标准。

每个用户都有自己的网上邮箱,发送方把信息发送到自己的网上信箱,并声明信息的接收方;该信箱所在的“邮局”会把信息发送到接收方的“邮局”,接收方从接收方的“邮局”中自己的信箱获取信息。

这样就完成了信息从发送方到接收方的传递。

所以,要发送或者接收邮件首先应该有自己的邮箱。

E-mail消息可以包含普通文本,也可以包含更为复杂的多媒体数据类型和图像声音等。

这样,用户就可以交换各种各样的信息。

每个E-mail消息的头信息中都包含消息的发出者、发送的目的地和其他相关信息。

2 E-mail体系结构要完成消息的交互,需要几方面的支持:邮件发送客户端程序、邮件接收客户端程序、邮件发送服务器和邮件接收服务器,此外,还需要相关的通信协议。

邮件发送客户端程序和邮件接收客户端程序可以是相同的,例如经常使用的微软的Outlook既可以发送邮件,也可以接收邮件。

邮件发送服务器和邮件接收服务器也可以是相同的服务器。

在与邮件服务器交互的过程中,主要完成两个动作,把邮件发送到邮件服务器,以及从邮件服务器读取邮件。

邮件发送方通过邮件发送客户端把邮件发送到发送方的邮件服务器,在发送的过程中需要用到SMTP协议。

发送方的邮件服务器把邮件发送到接收方的邮件服务器,使用的协议也是SMTP。

邮件接收方从接收方邮件服务器接收邮件,使用POP3协议或者IMAP协议。

3 E-mail相关的协议简单邮件传输协议(SMTP)在邮件发送方把邮件发送到发送方邮件服务器的时候,需要用到简单邮件传输协议(Simple Mail Transport Protocol,简称SMTP),发送方邮件服务器把邮件发送到接收方邮件服务器的时候,也要用到SMTP。

EJB系统使用JMS异步发送邮件

EJB系统使用JMS异步发送邮件
this.to = to;
this.subject = subject;
this.content = content;
this.multiPartFile = multiPartFile;
}
public String getFrom() {
}
public Date getSendDate() {
return Date;
}
public void setSendDate(Date sendDate) {
this.sendDate = sendDate;
}
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
Queue:点对点的方式,只能被一个接受者接受一次,消息生产者把消息发送到队列中,不需订阅。
要在JBoss中使用JMS,需要配置一些文件
1.%JBOSS_HOME%\server\default\deploy 下mail-service.xml,该文件用于配置发送email的一些参数(例子中使用gmail服务器)
<role name="noacc" read="false" write="false" create="false"/>
</security>
</attribute>
</mbean>启动JBoss,可以在控制台看到自己配置的Topic或Queue的名字。

通过代码示例跟我学Apache Commons-Email邮件组件技术及应用实例

通过代码示例跟我学Apache Commons-Email邮件组件技术及应用实例

目录1.1通过代码示例跟我学Apache Commons-Email邮件组件 (2)1.1.1Apache Commons-Email组件 (2)1.1.2应用Commons-Email组件实现在线发送邮件 (4)1.1.3采用同步方式实现邮件发送——但有延迟感 (7)1.1.4采用异步方式实现邮件发送——但需要应用观察者设计模式 (12)1.1通过代码示例跟我学Apache Commons-Email邮件组件在线发送和接收邮件目前是企业应用系统开发中的通用的功能要求——比如,在线投递通知和商业广告、激活账户、发送与用户注册有关的信息等。

作者在下面的章节中通过在银行账户信息管理系统中具体实现在线邮件发送的功能为示例,为读者介绍如何在项目开发中应用Commons-Email组件。

1.1.1Apache Commons-Email组件1、Apache Commons-Email 组件的主要功能(1)Sun的JavaMail在Java程序中也可以实现发送邮件等方面的功能,因为Sun公司在J2EE系统库中发布了一套JavaMail类库以帮助Java开发人员在项目开发中实现邮件发送和接收功能。

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。

它是Sun发布的用来处理email的API。

它可以方便地执行一些常用的邮件传输。

我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

(2)Commons组件Commons-Email 组件也是基于JavaMail API 而构建的一套系统库,它提供有在Java程序中操作邮件系统的一套API类库。

下图4.9所示是Apache 网站上对Commons-Email 组件的功能介绍和主要的功能类的作用说明文字的局部截图。

图4.9 Apache 网站上对Commons-Email 组件的功能介绍和主要的功能类的作用2、下载Commons-Email组件系统库文件读者可以在Apache的官方网站/email/中下载与邮件系统有关的Commons-Email组件的系统库文件commons-email-1.1.jar,并将该系统库文件添加到项目的classpath环境变量中(对于Web应用系统而言,同样也还是放在WEB-INF/lib目录中)——请见下图所示的操作结果状态的局部截图。

J2EEServletAPI中文说明文档

J2EEServletAPI中文说明文档

JavaEE Servlet2.1说明文档一、 JavaEE Servlet API的组成JavaEE Servlet API由两个软件包组成:一个是对应HTTP的软件包,另一个是不对应HTTP的通用的软件包。

这两个软件包的同时存在使得JavaEE Servlet API能够适应将来的其他请求-响应的协议。

这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。

二、有关规范你也许对下面的这些Internet规范感兴趣,这些规范将直接影响到Servlet API的发展和执行。

你可以从http: ///7c/in-notes/rfc/.cache 找到下面提到的所有这些RFC规范。

RFC 1738 统一资源定位器(URL)RFC 1808 相关统一资源定位器RFC 1945 超文本传输协议--HTTP/1.0RFC 2045 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式RFC 2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型RFC 2047 多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本RFC 2048 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第四部分: 注册步骤RFC 2049 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第五部分:一致性标准和例子RFC 2068 超文本传输协议 -- HTTP/1.1RFC 2069 一个扩展HTTP:摘要访问鉴定RFC 2109 HTTP状态管理机制RFC 2145 HTTP 版本号的使用和解释RFC 2324 超文本Coffee Pot控制协议 (HTCPCP/1.0)万维网协会()管理着这些协议的规范和执行。

j2ee体系介绍

j2ee体系介绍

J2EE体系介绍一、J2EE定义J2EE(Java 2 Platform, Enterprise Edition)是Java技术的一个扩展,它为构建企业级应用程序提供了一套完整的开发框架。

这个框架为应用程序的开发、部署和管理提供了丰富的服务,使开发人员能够更快速、更有效地构建企业级应用程序。

J2EE的出现,使得基于Java技术的企业级应用程序的开发更加标准化和规范化。

二、J2EE组件J2EE组件是构成企业级应用程序的基本单元,它们可以一起工作,为企业级应用程序提供强大的功能。

以下是一些主要的J2EE组件:1.应用程序客户端组件:这些组件是运行在客户端机器上的Java应用程序,它们通常用于与服务器交互以获取或提交数据。

2.Web组件:Web组件包括Java Server Pages (JSP) 和Servlet,它们用于创建动态Web内容。

3.EJB(Enterprise JavaBeans)组件:EJB是运行在J2EE服务器上的Java对象,它们代表了企业级应用程序的核心业务逻辑。

EJB可以分为Session Beans、Message-driven Beans和Entity Beans。

4.消息传递组件:这些组件用于实现异步通信,使应用程序能够处理基于消息的通信协议,如Java Message Service (JMS)。

5.事务管理组件:这些组件用于管理事务,确保数据的完整性和一致性。

6.安全和认证组件:这些组件用于提供安全性和认证功能,保护应用程序免受恶意攻击和数据泄露。

7.管理和监视组件:这些组件用于监视和管理应用程序的性能和安全性。

三、J2EE服务J2EE提供了以下服务来支持企业级应用程序的开发和部署:1.事务管理服务:事务管理服务确保数据的一致性和完整性。

在J2EE中,可以使用分布式事务管理服务来控制和管理分布式事务。

2.安全服务:J2EE提供了安全服务,以确保应用程序的安全性。

这些服务包括用户身份验证、授权和访问控制等功能。

[JavaMail]8 详解Message和MIME

[JavaMail]8 详解Message和MIME

A.0、MIMEMultipurpose Internet Mail Extension(多功能Internet 邮件扩充服务)它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。

服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。

服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。

MIME能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。

这个标准被定义在; RFC 2045,; RFC 2046,; RFC 2047,; RFC 2048,; RFC 2049等RFC中。

由RFC 822转变而来的RFC 2822,规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。

正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息都不能在电子邮件中传输。

MIME规定了用于表示各种各样的数据类型的符号化方法。

MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。

然而当它被HTTP协议支持之后,它的意义就更为显著了。

它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。

由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀和MIME类型之间的对应关系。

而客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型。

服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义,例如对于HTML文档,服务器将首先发送以下(Content-type: text/html)MIME标识信息,这个标识并不是真正的数据文件的一部分。

发送邮件 短信

发送邮件  短信

1.发送电子邮件首先应该构建JavaMail的开发环境,在JDK中配置JavaMail的相关类和包。

在构建JavaMail开发环境中,需要mail.jar和activation.jar这两个文件。

这两个文件的获得可以通过SUN公司的官方网站下载。

JavaMail对STMP、POP3、IMAP提供支持,封装了电子邮件功能中的邮件对象、发送、身份验证、接收等功能。

在发送各种类型的邮件时,主要应用到下面几个类:1)Session类。

用户要想发送邮件首先需要创建Session类的对象,利用这个对象创建邮件对象、指定邮件服务器认证的客户端属性。

它的类层次为javax.mail.Session。

2)InternetAddress类。

邮件发送的地址类,类层次结构是javax.mail.internet.InternetAddress,它继承自抽象类javax.mail.Address。

3)MimeMessage类。

邮件消息类,它的类层次结构是javax.mail.internet.MimeMessage,继承自抽象类javax.mail.Message。

4)Transport类。

邮件发送类,它的类层次结构是javax.mail.Transport。

5)Authenticator类。

授权者类,JavaMail通过使用Authenticator类以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是邮件服务器。

其类层次结构为javax.mail.Authenticator。

6)Store类。

用来从邮件服务器上接受邮件,其类层次结构为javax.mail.Store。

7)Folder类。

邮件文件夹类,它的类层次结构为javax.mail.Folder。

实现过程:<%@ page import="java.io.*"%><%@ page import="java.util.*"%><%@ page import="javax.mail.*"%><%@ page import="javax.mail.internet.*"%><%@ page import="javax.activation.*"%><%try{request.setCharacterEncoding("gb2312");String from = request.getParameter("jname");String to = request.getParameter("sname");String subject = request.getParameter("title");String messageText = request.getParameter("message");String password = request.getParameter("password");String S = request.getParameter("jname");int n = S.indexOf('@');int m = S.length();String server = S.substring(n+1,m);//建立邮件会话Properties pro = new Properties();pro.put("mail.smtp.host","smtp."+server);pro.put("mail.stmp.auth","true");Session sess = Session.getInstance(pro);sess.setDebug(true);MimeMessage message = new MimeMessage(mess);//新建一个消息对象//设置发件人InternetAddress from_mail = new InternetAddress(from);message.setFrom(from_mail);//设置收件人InternetAddress to_mail = new InternetAddress(to);message.setRecipient(Message.RecipientType.TO,to_mail);message.setSubject(subject);//设置主题message.setText(messageText);//设置内容message.setSentDate(new Date());//设置发送时间//发送邮件message.saveChanges();//保存邮件信息Transport transport = sess.getTransport("smtp");transport.connect("smtp."+server,from,password);transport.sendMessage(message,message.getAllRecipients());transport.close();out.print("邮件发送成功");}catch(Exception e){out.print("发送邮件失败,原因可能是<ul>");out.println(e.getMessage());}%>2.发送HTML格式的邮件MimeMultipart对象来存储HTML文件的具体内容,在设置内容的同时应该设置对象的格式。

如何自定义消息提醒

如何自定义消息提醒
try {
Client client = new Client("1SDK-EMY-6688-KJWTK", "285971");
if (client.sendSMS(phoneNumbers, smsContent, 5) == 0) {
return true;
}
} catch (Exception e) {
* @param mailAddresses消息接受者邮件地址
* @param smsContent消息内容
*/
public boolean sendSMS(String[] phoneNumbers, String mailAddresses[], String smsContent);
}
实现这个接口后,在系统参数设置中设置参数“自定义消息提醒实现类”为实现类名称如(com.yymy.SMSProvider)。
e.printStackTrace();
}
return false;
}
}
2.
将引用的第三方jar文件(如亿美软通的开发包:SDK4.3.2(JAVA).jar)复制到安装目录\tomcat\common\lib下;
生成的class文件(如com\yymy\SMSProvider.class)需要复制到需要用短信的关联系统程序目录下:
OA:安装目录\tomcat\webapps\oa\WEB-INF\classes
PB:安装目录\tomcat\webapps\pb\WEB-INF\classes
CRM:安装目录\tomcat\webapps\crm\WEB-INF\classes
更新程序完成后,重启协同管理系统。

JavaEE十三种规范

JavaEE十三种规范

JavaEE⼗三种规范JAVAEE平台由⼀整套服务(Services)、应⽤程序接⼝(APIs)和协议构成,它对开发基于Web的多层应⽤提供了功能⽀持,下⾯对JAVAEE中的13种技术规范进⾏简单的描述。

1、JDBC(Java Database Connectivity) JDBC API为访问不同的数据库提供了⼀种统⼀的途径,像ODBC⼀样,JDBC对开发者屏蔽了⼀些细节问题,另外,JDCB对数据库的访问也具有平台⽆关性。

2、JNDI(Java Naming and Directory Interface,Java命名和⽬录接⼝)JNDI是SUN公司提供的⼀种标准的Java命名系统接⼝,JNDI提供统⼀的客户端API,通过不同的访问提供者接⼝JNDI服务供应接⼝(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和⽬录系统,使得Java应⽤程序可以和这些命名服务和⽬录服务之间进⾏交互。

在没有JNDI之前:开发的时候,在连接数据库代码中需要对JDBC驱动程序类进⾏应⽤,通过⼀个URL连接到数据库。

但是这样存在问题,⽐如我要改⼀种数据库,是不是要更换驱动,更换URL。

每次都要进⾏这些配置和管理。

在有了JNDI之后:可以在J2ee容器中配置JNDI参数,定义⼀个数据源,在程序中,通过数据源名称引⽤数据源从⽽访问后台数据库。

在程序中定义⼀个上下⽂类,然后⽤content.lookup("就可以成功引⼊数据源了。

在DataSource中事先建⽴多个数据库连接,保存在数据库连接池中,当程序访问数据库时,只⽤从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库链接重新回到连接池例如:数据源定义3、EJB(Enterprise EJB是sun的JavaEE服务器端组件模型,设计⽬标与核⼼应⽤是部署分布式应⽤程序。

⽤通俗的话来理解,就是把已经打包好的东西放到服务器中去执⾏,这样是凭借了java跨平台的优势,利⽤EJB技术部署分布式系统可以不限于特定的平台。

JAVA邮件服务API详解

JAVA邮件服务API详解

JavaMail(JAVA邮件服务) API详解一、JavaMail API简介JavaMail API是读取、撰写、发送电子信息的可选包。

我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。

而不是像sendmail或者其它的邮件传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发邮件。

从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着MTA处理邮件的递送。

在清楚了到MUA与MTA之间的关系后,让我们看看JavaMail API是如何提供信息访问功能的吧!JavaMail API被设计用于以不依赖协议的方式去发送和接收电子信息,这个API被分为两大部分:基本功能:如何以不依赖于协议的方式发送接收电子信息,这也是本文所要描述的,不过在下文中,大家将看到这只是一厢情愿而已。

第二个部分则是依赖特定协议的,比如SMTP、POP、IMAP、NNTP协议。

在这部分的JavaMail API是为了和服务器通讯,并不在本文的内容中。

二、相关协议一览在我们步入JavaMail API之前,先看一下API所涉及的协议。

以下便是大家日常所知、所乐于使用的4大信息传输协议:SMTPPOPIMAPMIME当然,上面的4个协议,并不是全部,还有NNTP和其它一些协议可用于传输信息,但是由于不常用到,所以本文便不提及了。

理解这4个基本的协议有助于我们更好的使用JavaMail API。

然而JavaMail API是被设计为与协议无关的,目前我们并不能克服这些协议的束缚。

确切的说,如果我们使用的功能并不被我们选择的协议支持,那么JavaMail API并不可能如魔术师一样神奇的赋予我们这种能力。

1.SMTP简单邮件传输协议定义了递送邮件的机制。

在下文中,我们将使用基于Java-Mail的程序与公司或者ISP的SMTP服务器进行通讯。

Java消息队列

Java消息队列

Java消息队列⼀、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应⽤解耦,异步消息,流量削锋等问题,实现⾼性能,⾼可⽤,可伸缩和最终⼀致性架构。

⽬前使⽤较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ⼆、消息队列应⽤场景以下介绍消息队列在实际应⽤中常⽤的使⽤场景。

异步处理,应⽤解耦,流量削锋和消息通讯四个场景。

2.1异步处理场景说明:⽤户注册后,需要发注册邮件和注册短信。

传统的做法有两种 1.串⾏的⽅式;2.并⾏⽅式a、串⾏⽅式:将注册信息写⼊数据库成功后,发送注册邮件,再发送注册短信。

以上三个任务全部完成后,返回给客户端。

b、并⾏⽅式:将注册信息写⼊数据库成功后,发送注册邮件的同时,发送注册短信。

以上三个任务完成后,返回给客户端。

与串⾏的差别是,并⾏的⽅式可以提⾼处理的时间假设三个业务节点每个使⽤50毫秒钟,不考虑⽹络等其他开销,则串⾏⽅式的时间是150毫秒,并⾏的时间可能是100毫秒。

因为CPU在单位时间内处理的请求数是⼀定的,假设CPU1秒内吞吐量是100次。

则串⾏⽅式1秒内CPU可处理的请求量是7次(1000/150)。

并⾏⽅式处理的请求量是10次(1000/100)⼩结:如以上案例描述,传统的⽅式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。

如何解决这个问题呢?引⼊消息队列,将不是必须的业务逻辑,异步处理。

改造后的架构如下:按照以上约定,⽤户的响应时间相当于是注册信息写⼊数据库的时间,也就是50毫秒。

注册邮件,发送短信写⼊消息队列后,直接返回,因此写⼊消息队列的速度很快,基本可以忽略,因此⽤户的响应时间可能是50毫秒。

因此架构改变后,系统的吞吐量提⾼到每秒20 QPS。

⽐串⾏提⾼了3倍,⽐并⾏提⾼了两倍。

2.2应⽤解耦场景说明:⽤户下单后,订单系统需要通知库存系统。

传统的做法是,订单系统调⽤库存系统的接⼝。

如下图:传统模式的缺点:假如库存系统⽆法访问,则订单减库存将失败,从⽽导致订单失败,订单系统与库存系统耦合如何解决以上问题呢?引⼊应⽤消息队列后的⽅案,如下图:订单系统:⽤户下单后,订单系统完成持久化处理,将消息写⼊消息队列,返回⽤户订单下单成功库存系统:订阅下单的消息,采⽤拉/推的⽅式,获取下单信息,库存系统根据下单信息,进⾏库存操作假如:在下单时库存系统不能正常使⽤。

Java-465端口邮件发送

Java-465端口邮件发送

Java-465端⼝邮件发送阿⾥云25端⼝默认情况下不可⽤,官⽅解释如下:相关说明:发邮件请使⽤外部邮件服务商的465端⼝或云邮产品。

若有特殊场景,需要从云主机对外连接TCP25端⼝,请提交“25端⼝解封申请”。

提交申请后,需要1个⼯作⽇完成审核,审核结果将邮件通知您。

可以使⽤465端⼝发送邮件代码private static final String MAIL_HOST_VALUE =""; //发送邮件的服务器地址private static final String MAIL_FROM ="xxxxxx";//邮件发送⼈private static final String MAIL_FROM_PASSWORD ="xxxxxx";//邮件发送⼈授权码(不是邮箱密码)private static final String MAIL_SUBJECT_VERIFY_CODE ="xxx⽹【邮箱验证码】";//主题private static final String MAIL_ORGANIZATION ="xxx⽹";//组织public static void Main(String args[]){sendMail("xxx@",MAIL_FROM,MAIL_SUBJECT_VERIFY_CODE,"邮件内容",null))}/*** @Param to 接收者* @Param cc 发送者* @Param subject 主题* @Param content 内容* @Param fileList 附件* */public static boolean sendMail(String to, String cc, String subject, String content, String[] fileList){try {Security.addProvider(new .ssl.internal.ssl.Provider());final String SSL_FACTORY = ".ssl.SSLSocketFactory";final Properties p = System.getProperties() ;p.setProperty("mail.smtp.host", MAIL_HOST_VALUE);p.setProperty("mail.smtp.auth", "true");p.setProperty("er", MAIL_FROM);p.setProperty("mail.smtp.pass", MAIL_FROM_PASSWORD);p.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);p.setProperty("mail.smtp.socketFactory.fallback", "false");p.setProperty("mail.smtp.port", "465");p.setProperty("mail.smtp.socketFactory.port", "465");// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession session = Session.getInstance(p, new Authenticator(){protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(p.getProperty("er"),p.getProperty("mail.smtp.pass")); }});session.setDebug(true);Message message = new MimeMessage(session);//消息发送的主题message.setSubject(subject);//接受消息的⼈message.setReplyTo(InternetAddress.parse(MAIL_FROM));//消息的发送者message.setFrom(new InternetAddress(p.getProperty("er"),"新乡学院失物招领⽹"));// 创建邮件的接收者地址,并设置到邮件消息中String[] split = to.split(",");InternetAddress []tos = new InternetAddress[split.length];for (int i = 0; i < split.length; i++) {tos[i]=new InternetAddress(split[i]);}// 设置抄送⼈if (cc != null && cc.length() > 0) {message.setRecipients(, InternetAddress.parse(cc));}message.setRecipients(Message.RecipientType.TO, tos);// 消息发送的时间message.setSentDate(new Date());Multipart mainPart = new MimeMultipart();// 创建⼀个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();// 设置HTML内容html.setContent(content, "text/html; charset=utf-8");mainPart.addBodyPart(html);// 将MiniMultipart对象设置为邮件内容message.setContent(mainPart);// 设置附件if (fileList != null && fileList.length > 0) {for (int i = 0; i < fileList.length; i++) {html = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList[i]);html.setDataHandler(new DataHandler(fds));html.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B")); mainPart.addBodyPart(html);}}message.setContent(mainPart);message.saveChanges();Transport.send(message);} catch (MessagingException e) {e.printStackTrace();return false;} catch (UnsupportedEncodingException e) {e.printStackTrace();return false;}return true;}code By。

JavaEE5学习笔记04-JavaMail使用总结

JavaEE5学习笔记04-JavaMail使用总结

JavaEE5学习笔记04-JavaMail使用总结刘岩Email:suhuanzheng7784877@1.JavaMail简介其实利用JavaMail API发送邮件本身没什么,在Java Web系统中也可以将自的Foxmail。

因为它确实为您屏蔽了底层的通讯协议、发送细节等等。

2.常用接口JavaMail常用的接口有如下几个1.javax.mail.Session:代表一次邮件会话。

2.javax.mail.Transport3.此类用于邮件的读取、写、监视、查找等等操作如下操作4.javax.mail.Folder用于组织邮件,代表邮件系统的一个文件夹。

5.javax.mail.MimeMessage实际的邮件对象它下属性bte[] content:邮件内容的字节数组InternetHeaders header:邮件的文件头对象它还有如下方法Void addFrom():设置发件人Void addHeader():设置邮件头信息Void addRecipients():增加收件地址Address[] getFrom():返回邮件发件人地址列表Void setContent():设置Email的内容6.javax.mail.Address制定人发件人、收件人地址,它也是一个抽象类,他有一个InternetAddress 子类。

7.javax.mail.Multipart用于保存电子邮件的内容的容器,它定义了添加、删除、获得电子邮件内容的方法。

他也是抽象类,有一个子类叫做MimeMultipart。

8.javax.mail.BodyPart以上代码示例出现了MimeBodyPart,他是BodyPart的子类,代表邮件内容的一部分,既可以代表邮件正文、也可以代表邮件的附件。

上面是描绘了一个普通的字符串。

9.javax.activation.DataHandler10.javax.activation.FileDataSource一般是附件文件对象,可以用于给邮件增加附件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

消息邮件java接口使用说明在进行接口调用前,需要得到一个接口操作类的实例,即DmailHandle的实例,通过DmailHandleFactory.getInstance(CharSet charset),(也可以调用DmailHandleFactory.getInstance() ,此时使用默认的编码格式GB18030);多个接口调用时可以使用同一个实例。

以下接口需要用到dm.jar1. 用户验证1.1接口public Session login(String ip, int port,Stringusername,String password);1.2接口使用示例//得到操作接口实例DmailHandle handel = DmailHandleFactory.getInstance();//调用验证接口Session session = handle.login(String ip, int port,Stringusername,String password); //关闭连接,释放资源handel. loginOut (session);1.3 参数说明1.4返回值说明验证成功:返回验证后的连接(session)验证失败:返回 null2. 接收eh文件2.1接口public Message dmailRecv(Session session,int type,StringsavePath, Vector<String> ehFileNames);2.2接口使用示例:DmailHandle handel = DmailHandleFactory.getInstance();Session session = handle.login(String ip, int port,Stringusername,String password);//调用接收eh文件接口Vector<String> ehFileNames = new Vector<String>();handel.dmailRecv(session, 2, "temp/recv", ehFileNames);handel. loginOut (session);2.3 方法参数说明2.4返回值说明kd.dmail.bean.Messagemessage.getCode() 返回1,则表示接收成功,否则为接收失败,如果接收失败,则通过message.getErrorMsg()会得到失败信息3. 接收eh文件对应的附件3.1接口public Message recvDmailAttach(Session session,String ehFileName,Vector<String> attachNames,String savePath);3.2接口使用示例DmailHandle handel = DmailHandleFactory.getInstance();Session session = handle.login(String ip, int port,Stringusername,String password);Vector<String> v = new Vector<String>();v.add("abc2.txt");Message message = handel.recvDmailAttach(session, "gw2.eh",v);handel.loginOut (session);3.3参数说明3.4返回值说明kd.dmail.bean.Messagemessage.getCode() 返回1,则表示接收成功,否则为接收失败,如果接收失败,则通过message.getErrorMsg()会得到失败信息4. 发送邮件4.1接口public Message sendDmail(Session session,String ehFilePath,Vector<String> attachFilePaths); 4.2接口使用示例DmailHandle handel = DmailHandleFactory.getInstance();Session session = handle.login("192.168.200.163",DmailHandleFactory.DEFAULT_PORT,"国调1.自动化", "zdh,zdh");Vector<String> attachFilePaths = new Vector<String>();attachFilePaths.add("D:\\project\\workspace\\dmailclient\\temp\\recvd\\gw2\\attach\\abc3.txt");String ehFilePath ="D:\\project\\workspace\\dmailclient\\temp\\recvd\\gw2\\gw3.eh";Message message = handel.sendDmail(session, ehFilePath,attachFilePaths);handel.loginOut (session);4.3参数说明4.4返回值说明kd.dmail.bean.Messagemessage.getCode() 返回1,则表示接收成功,否则为接收失败,如果接收失败,则通过message.getErrorMsg()会得到失败信息5.删除邮件5.1接口public Message delDmail(Session session,String ehFileName);5.2接口使用示例DmailHandle handel = DmailHandleFactory.getInstance();Session session = handle.login("192.168.200.163",DmailHandleFactory.DEFAULT_PORT,"国调1.自动化", "zdh,zdh");String ehFile = "gw3.eh";Message message = handel.delDmail(session, ehFile);handel. loginOut (session);5.3参数说明5.4返回值说明kd.dmail.bean.Messagemessage.getCode() 返回1,则表示接收成功,否则为接收失败,如果接收失败,则通过message.getErrorMsg()会得到失败信息6. 阅读邮件6.1接口public Message readDmail(Session session,String ehFileName);6.2接口使用示例DmailHandle handel = DmailHandleFactory.getInstance();Session session = handle.login("192.168.200.163",DmailHandleFactory.DEFAULT_PORT,"国调1.自动化", "zdh,zdh");String ehFilePath = "gw2.eh";Message message = handel.readDmail(session, ehFilePath);handel. loginOut (session);6.3参数说明6.4返回值说明kd.dmail.bean.Messagemessage.getCode() 返回1,则表示接收成功,否则为接收失败,如果接收失败,则通过message.getErrorMsg()会得到失败信息7. 判断邮件是否发送成功7.1接口public boolean isMailSent(Session session, String ehFileName,String sendAddr,StringBuilder errorMsg);7.2接口使用示例DmailHandle handel = DmailHandleFactory.getInstance();Session session = handle.login("192.168.200.163",DmailHandleFactory.DEFAULT_PORT,"国调1.自动化", "zdh,zdh");String ehFilePath = "gw2.eh";boolean isSent = handle.isMailSent(session, "gw2.eh ","国调1.自动化", errorMsg);handel. loginOut (session);7.3 参数说明7.4boolean 类型邮件是否发送成功8. 判断邮件是否接收到8.1 接口public boolean isMailRecvd(Session session,String ehFileName,StringBuilder errorMsg);8.2 接口使用示例DmailHandle handel = DmailHandleFactory.getInstance();Session session = handle.login("192.168.200.163",DmailHandleFactory.DEFAULT_PORT,"国调1.自动化", "zdh,zdh");boolean isRecvd = handle.isMailRecvd(session,"DMail_20140226_145841.eh", errorMsg);8.3 参数说明8.4booleantrue 收到false 未收到9. 生成eh文件解析eh文件9.1 接口public Dmail buildEhFile(Dmail mail,String savePath,StringBuildererrorMsg);9.2 接口使用示例String savepath = "C:\\Users\\DEll\\Desktop\\邮件";DmailHandle handle = DmailHandleFactory.getInstance();StringBuilder errorMsg = new StringBuilder();Dmail dmail = handle.dmailParse(mail, savepath, errorMsg);9.3参数说明9.4String返回生成的eh文件名10. 解析eh文件10.1 接口public Dmail dmailParse(String filePath,StringBuilder errorMsg);10.2 接口使用示例String ehFilePath = "C:\\Users\\DEll\\Desktop\\邮件\\DMail_20140227_145841.eh";DmailHandle handle = DmailHandleFactory.getInstance();StringBuilder errorMsg = new StringBuilder();Dmail dmail = handle.dmailParse(ehFilePath, errorMsg); 10.3参数说明10.4kd.dmail.bean.Dmail返回解析后的信息,封装在Dmail实例中11. 获取日志11.1 接口public Message getLogFile(Session session, int year, int month, int day, String savePath, Vector<String> logFileNames) 11.2 接口使用示例DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port,username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Vector<String> logFileNames = new Vector<String>();Message message = handle.getLogFile(session, 2014, 2, 27, "C:\\Users\\DEll\\Desktop\\dmail\\log", logFileNames); 11.3 参数说明kd.dmail.bean.Messagemessage.getCode() 返回1,则表示接收成功,否则为接收失败,如果接收失败,则通过message.getErrorMsg()会得到失败信息12. 退出12.1接口public void loginOut(Session session) ;11.2接口使用示例(见以上接口使用示例)12.3参数说明12.4返回值说明void13. 接口使用示例13.1.示例说明国调1向国调2发送邮件,国调2接收邮件并且进行邮件的接收eh,接收附件,阅读邮件,删除邮件操作import kd.dmail.bean.Message;import kd.dmail.handle.DmailHandle;import kd.dmail.handle.DmailHandleFactory;import kd.dmail.socket.Session;public class DmailSend {// 国调2 ip地址private String ip = "192.168.200.163";// 服务端端口号private int port = 5677;// 国调1用户名private String username = "国调1.自动化";// 国调1登录密码private String password = "zdh,zdh";/*** 发送邮件*/public void sendMail() {DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port,username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Message message = null;if(session!=null) {Vector<String> attachFilePaths = newVector<String>();//附件路径attachFilePaths.add("C:\\Users\\DEll\\Desktop\\邮件\\附件\\classpath");//eh文件路径String ehFilePath = "C:\\Users\\DEll\\Desktop\\邮件\\DMail_20140227_145841.eh";//会根据eh文件中的地址的描述发送到指定地点message = handle.sendDmail(session, ehFilePath, attachFilePaths);handle.loginOut(session);}if(message.getCode()==1 ) {System.out.println("发送成功!");//doSomething}else {System.out.println(message.getErrorMsg());//doSomething}}/*** 检查邮件是否发送成功*/public void checkSent() {DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port,username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();StringBuilder errorMsg = new StringBuilder();boolean flag = handle.isMailSent(session,"DMail_20140227_145841.eh", "国调2.自动化", errorMsg);if(flag) {System.out.println("发送成功");}else {System.out.println("发送失败"+errorMsg.toString());}}/*** 获取日志*/public void getLog() {DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port,username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Vector<String> logFileNames = new Vector<String>();Message message = handle.getLogFile(session, 2014, 2, 27, "C:\\Users\\DEll\\Desktop\\dmail\\log", logFileNames);if(message.getCode()==1) {System.out.println("日志接收成功");}else { //日志获取失败System.out.println(message.getErrorMsg());}}public static void main(String[] args) {// new DmailSend().sendMail();new DmailSend().checkSent();}}13.4.国调2端的操作示例package kd.dmail.example;import java.io.IOException;import .UnknownHostException; import java.util.Vector;import kd.dmail.bean.Dmail;import kd.dmail.bean.Message;import kd.dmail.handle.DmailHandle; import kd.dmail.handle.DmailHandleFactory; import kd.dmail.socket.Session;public class DmailRecv {// 国调2 ip地址private String ip = "192.168.200.164";// 服务端端口号private int port = 5677;// 国调1用户名private String username = "国调2.自动化";// 国调1登录密码private String password = "zdh,zdh";/*** 检查是否收到*/public void checkRecv() {DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port, username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}String ehFile = "DMail_20140227_145841.eh";StringBuilder errorMsg = new StringBuilder();boolean recvSuccess = handle.isMailRecvd(session, ehFile, errorMsg);if(recvSuccess) {System.out.println("邮件已收到");}else {System.out.println("错误信息:"+errorMsg);}}/*** 接收eh文件*/public void recvEh() {DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port, username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Message message = null;//存储接收到的邮件名Vector<String> ehFileNames = null;if (session != null) {ehFileNames = new Vector<String>();// 第二个参数为接收到的eh文件在本地的存放路径message = handle.dmailRecv(session, 2,"C:\\Users\\DEll\\Desktop\\邮件\\mail",ehFileNames);handle.loginOut(session);}// 接收成功if (message.getCode()==1) {System.out.println("eh文件接收成功!");// doSomething..System.out.println("第一个邮件名:"+ehFileNames.get(0));} else {System.out.println("接收失败");// doSomething..System.out.println("错误信息--"+message.getErrorMsg());}}/*** 接收eh文件对应的附件* 该邮件必须是已读邮件,否则会有EOFException*/// 接收成功if (message.getCode()==1) {System.out.println("附件接收成功!");// doSomething..} else {System.out.println("接收失败");// doSomething..System.out.println("错误信息:"+message.getErrorMsg());}}/*** 阅读邮件*/public void readMail() {DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port,username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}String ehFile = "DMail_20140227_145841.eh";Message message = null;//判断是否通过验证if(session!=null) {message = handle.readDmail(session, ehFile);handle. loginOut (session);}// 接收成功if (message.getCode()==1) {System.out.println("阅读邮件成功!");// doSomething..} else {System.out.println("阅读失败");// doSomething..System.out.println("错误信息:"+message.getErrorMsg());}}/*** 删除邮件*/public void delMail() {DmailHandle handle = DmailHandleFactory.getInstance();Session session = null;try {session = handle.login(ip, port,username, password);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}String ehFile = "DMail_20140227_145841.eh";Message message = null;if(session!=null) {message = handle.delDmail(session, ehFile);handle. loginOut (session);}if(message.getCode()==1) {System.out.println("删除成功");}else {System.out.println("删除失败!");System.out.println("错误信息:"+message.getErrorMsg());}handle.loginOut(session);}public void dmailParse() {String ehFilePath = "C:\\Users\\DEll\\Desktop\\邮件\\DMail_20140227_145841.eh";DmailHandle handle = DmailHandleFactory.getInstance();StringBuilder errorMsg = new StringBuilder();Dmail dmail = handle.dmailParse(ehFilePath, errorMsg);//eh文件名System.out.println(dmail.getMailName());System.out.println(dmail.getTitle());System.out.println(dmail.getSendTime());System.out.println(dmail.getContent());System.out.println(dmail.getTransferType());//得到第一个附件名System.out.println(dmail.getFiles()[0]);//第一个接收地址System.out.println(dmail.getRecvAddrs()[0]);}public static void main(String[] args) {// new DmailRecv().checkRecv();// new DmailRecv().dmailParse();// new DmailRecv().recvEh();// new DmailRecv().readMail();// new DmailRecv().recvAttach();new DmailRecv().delMail();}}。

相关文档
最新文档