JAVA MAIL应用五 (详解PROPERTIES SESSION)

JAVA MAIL应用五 (详解PROPERTIES SESSION)
JAVA MAIL应用五 (详解PROPERTIES SESSION)

1.Properties(属性对象)

由于JavaMail需要和邮件服务器进行通信,这就要求程序提供许多诸如服务器地址、端口、用户名、密码等信息,JavaMail通过Properties对象封装这些属性西信息。如下面的代码封装了两个属性信息:

Properties props=new Properties();

props.put("mail.smtp.host","https://www.360docs.net/doc/6d1272787.html,");

props.put("mail.smtp.auth","true");

针对不同的的邮件协议,JavaMail规定了服务提供者必须支持一系列属性,下表是针对SMTP 协议的一些常见属性(属性值都以String类型进行设置,属性类型栏仅表示属性是如何被解析的):

属性名属性类型说明

mail.stmp.host String SMTP服务器地址,如https://www.360docs.net/doc/6d1272787.html,

mail.stmp.port int SMTP服务器端口号,默认为25

mail.stmp.auth boolean SMTP服务器是否需要用户认证,默认为false https://www.360docs.net/doc/6d1272787.html,er String SMTP默认的登陆用户名

mail.stmp.from String默认的邮件发送源地址

mail.stmp.socketFactory.class String socket工厂类类名,通过设置该属性可以覆盖提供

者默认的实现,必须实现https://www.360docs.net/doc/6d1272787.html,.SocketFactory接

mail.stmp.socketFactory.port int指定socket工厂类所用的端口号,如果没有规定,

则使用默认的端口号

mail.smtp.socketFactory.fallbackboolean设置为true时,当使用指定的socket类创建socket

失败后,将使用https://www.360docs.net/doc/6d1272787.html,.Socket创建socket,默认

为true

mail.stmp.timeout int I/O连接超时时间,单位为毫秒,默认为永不超时其他几个协议也有类似的一系列属性,如POP3的mail.pop3.host、mail.pop3.port以及IMAP 的mail.imap.host、mail.imap.port等。

更详细的信息请查看com.sun.mail.smtp、com.sun.mail.pop3和com.sun.mail.imap这三个包的Javadoc:https://www.360docs.net/doc/6d1272787.html,/products/javamail/javadocs/index.html。

2.Session(会话对象)

Session是一个很容易被误解的类,这归咎于混淆视听的类名。千万不要以为这里的Session 像HttpSession一样代表真实的交互会话,但创建Session对象时,并没有对应的物理连接,它只不过是一对配置信息的集合。Session的主要作用包括两个方面:

1.接收各种配置属性信息:通过Properties对象设置的属性信息;

2.初始化JavaMail环境:根据JavaMail的配置文件,初始化JavaMail环境,以便通过Session对象创建其他重要类的实例。

所以,如果把Session更名为Configure也许更容易理解一些。

Session通过JavaMail配置文件以及程序中设置的Properties对象构建一个邮件处理环境,后续的处理将在Session基础上进行。Session拥有多个静态工厂方法用于创建Session实例。getInstance方法

1.static Session getDefaultInstance(Properties props,Authenticator authenticator):当JVM中已经存在默认的Session实例中,直接返回这个实例,否则创建一个新的Session实例,并将其作为JVM中默认Session实例。这个API很诡异,我们将对它进行详细的讲解。由于这个

默认Session实例可以被同一个JVM所有的代码访问到,而Session中本身又可能包括密码、用户名等敏感信息在内的所有属性信息,所以后续调用也必须传入和第一次相同的Authenticator实例,否则将抛出https://www.360docs.net/doc/6d1272787.html,ng.SecurityException异常。如果第一次调用时Authenticator入参为null,则后续调用通过null的Authenticator入参或直接使用getDefaultInstance(Properties props)即可返回这个默认的Session实例。值得一提的是,虽然后续调用也会传入Properties,但新属性并不会起作用,如果希望采用新的属性值,则可以通过getDefaultInstance(Properties props)创建一个新的Session实例达到目的。Authenticator 在这里承当了两个功能:首先,对JVM中默认Session实例进行认证保护,后续调用执行getDefaultInstance(Properties props,Authenticator authenticator)方法时必须和第一次一样;其次,在具体和邮件服务器交互时,又作为认证的信息;

2.static Session getDefaultInstance(Properties props):返回JVM中默认的Session实例,如果第一次创建Session未指定Authenticator入参,后续调用可以使用该访问获取Session; 3.static Session getInstance(Properties props,Authenticator authenticator):创建一个新的Session实例,它不会在JVM中被作为默认实例共享;

4.static Session getInstance(Properties props):根据相关属性创建一个新的Session实例,未使用安全认证信息;

Session是JavaMail提供者配置文件以及设置属性信息的“容器”,Session本身不会和邮件服务器进行任何的通信。所以在一般情况下,我们仅需要通过getDefaultInstance()获取一个共享的Session实例就可以了,下面的代码创建了一个Session实例:

Properties props=System.getProperties();

props.setProperty("mail.transport.protocol","smtp");…

Session session=Session.getDefaultInstance(props);

注意:要观察传到邮件服务器上的邮件命令,请用session.setDebug(true)设置调试标志。3.Transport和Store(传输和存储)

邮件操作只有发送或接收两种处理方式,JavaMail将这两种不同操作描述为传输(javax.mail.Transport)和存储(javax.mail.Store),传输对应邮件的发送,而存储对应邮件的接收。

Session提供了几个用于创建Transport和Store实例的方法,在具体讲解这些方法之前,我们事先了解一下Session创建Transport和Store的内部机制。我们知道提供者在javamail.providers配置文件中为每一种支持的邮件协议定义了实现类,Session根据协议类型(stmp、pop3等)和邮件操作方式(传输和存储)这两个信息就可以定位到一个实例类上。比如,指定stmp协议和transport类型后,Session就会使用com.sun.mail.smtp.SMTPTransport 实现类创建一个Transport实例,而指定pop3协议和store类型时,则会使用com.sun.mail.pop3.POP3Store实例类创建一个Store实例。Session提供了多个重载的getTransport()和getStore()方法,这些方法将根据Session中Properties属性设置情况进行工作,影响这两套方法工作的属性包括:

属性名说明

mail.transport.protocol默认的邮件传输协议,例如,smtp

mail.store.protocol默认的存储邮件协议,例如:pop3

mail.host默认的邮件服务地址,例如:192.168.67.1

https://www.360docs.net/doc/6d1272787.html,er默认的登陆用户名,例如:zapldy

下面,我们再回头来了解Session的getTransport()和getStore()的重载方法。

Transport的getTransport()方法

1.Transport getTransport():当Session实例设置了mail.transport.protocol属性时,该方法返

回对应的Transport实例,否则抛出javax.mail.NoSuchProviderException。

2.Transport getTransport(String protocol):如果Session没有设置mail.transport.protocol属性,可以通过该方法返回指定类型的Transport,如transport=session.getTransport(“smtp”)。

如果Session中未包含Authenticator,以上两方法创建的Transport实例和邮件服务器交互时必须显示提供用户名/密码的认证信息。如果Authenticator非空,则可以在和邮件服务器交互时被作为认证信息使用。

除了以上两种提供认证信息的方式外,Session还可以使用以下的方法为Transport提供认证信息。

3.Transport getTransport(URLName url):用户可以通过URLName入参指定邮件协议、邮件服务器、端口、用户名和密码信息,请看下面的代码:

URLName urln=new URLName(“smtp”,“https://www.360docs.net/doc/6d1272787.html,”,25,null,“masterspring2”,“spring”); Transport transport=session.getTransport(urln);

/*这里,指定了邮件协议为smtp,邮件服务器是https://www.360docs.net/doc/6d1272787.html,,端口为25,用户名/ *密码为masterspring2/spring。*/

消息发送的最后一部分是使用Transport类。这个类用协议指定的语言发送消息(通常是SMTP)。它是抽象类,它的工作方式与Session有些类似。仅调用静态send()方法,就能使用类的缺省版本:

Transport.send(message);

或者,您也可以从针对您的协议的会话中获得一个特定的实例,传递用户名和密码(如果不必要就不传),发送消息,然后关闭连接。

message.saveChanges();

Transport transport=session.getTransport("smtp");

transport.connect(host,username,password);

transport.sendMessage(message,message.getAllRecipients());

transport.close();

后面这种方法在您要发送多条消息时最好,因为它能保持邮件服务器在消息间的活动状态。基本send()机制为每个方法的调用设置与服务器独立的连接。

Store方法

用Session获取消息与发送消息开始很相似。但是,在session得到后,很可能使用用户名和密码或使用Authenticator连接到一个Store。类似于Transport,您告知Store使用什么协议:

//Store store=session.getStore("imap");

Store store=session.getStore("pop3");

store.connect(host,username,password);

连接到Store之后,接下来,您就可以获取一个Folder,您必需先打开它,然后才能读里面的消息。

Folder folder=store.getFolder("INBOX");

folder.open(Folder.READ_ONLY);

Message message[]=folder.getMessages();

POP3唯一可以用的文件夹是INBOX。如果使用IMAP,还可以用其它文件夹。

注意:Sun的供应商有意变得聪明。虽然Message message[]=folder.getMessages();看上去是个很慢的操作,它从服务器上读取每一条消息,但仅在你实际需要消息的一部分时,消息的内容才会被检索。

一旦有了要读的Message,您可以用getContent()来获取其内容,或者用writeTo()将内容

写入流。getContent()方法只能得到消息内容,而writeTo()的输出却包含消息头。

System.out.println(((MimeMessage)message).getContent());

一旦读完邮件,要关闭与folder和store的连接。

folder.close(aBoolean);

store.close();

传递给folder的close()方法的boolean表示是否清除已删除的消息从而更新folder。4.Message(消息对象)

一旦获得Session对象,就可以继续创建要发送的消息。这由Message类来完成。因为Message是个抽象类,您必需用一个子类,多数情况下为javax.mail.internet.MimeMessage。MimeMessage是个能理解MIME类型和头的电子邮件消息,正如不同RFC中所定义的。虽然在某些头部域非ASCII字符也能被译码,但Message头只能被限制为用US-ASCII字符。

要创建一个Message,请将Session对象传递给MimeMessage构造器:

MimeMessage message=new MimeMessage(session);

注意:还存在其它构造器,如用按RFC822格式的输入流来创建消息。

一旦获得消息,您就可以设置各个部分,因为Message实现Part接口(且MimeMessage实现MimePart)。设置内容的基本机制是setContent()方法,同时使用参数,分别代表内容和mime类型:

message.setContent("Hello","text/plain");

但如果,您知道您在使用MimeMessage,而且消息是纯文本格式,您就可以用setText()方法,它只需要代表实际内容的参数,(MIME类型缺省为text/plain):

message.setText("Hello");

后一种格式是设置纯文本消息内容的首选机制。至于发送其它类型的消息,如HTML文件格式的消息,我们首选前者。

用setSubject()方法设置subject(主题):

message.setSubject("First");

5.Address(地址)

一旦您创建了Session和Message,并将内容填入消息后,就可以用Address确定信件地址了。和Message一样,Address也是个抽象类。您用的是javax.mail.internet.InternetAddress类。若创建的地址只包含电子邮件地址,只要传递电子邮件地址到构造器就行了。

Address address=new InternetAddress("president@https://www.360docs.net/doc/6d1272787.html,");

若希望名字紧挨着电子邮件显示,也可以把它传递给构造器:

Address address=new InternetAddress("president@https://www.360docs.net/doc/6d1272787.html,","George Bush");

需要为消息的from域和to域创建地址对象。除非邮件服务器阻止,没什么能阻止你发送一段看上去是来自任何人的消息。

一旦创建了address(地址),将它们与消息连接的方法有两种。如果要识别发件人,您可以用setFrom()和setReplyTo()方法。

message.setFrom(address)

需要消息显示多个from地址,可以使用addFrom()方法:

Address address[]=...;

message.addFrom(address);

若要识别消息recipient(收件人),您可以使用addRecipient()方法。除address(地址)外,这一方法还请求一个Message.RecipientType。

message.addRecipient(type,address)

三种预定义的地址类型是:

Message.RecipientType.TO

https://www.360docs.net/doc/6d1272787.html,

Message.RecipientType.BCC

如果消息是发给副总统的,同时发送一个副本(carbon copy)给总统夫人,以下做法比较恰当:Address toAddress=new InternetAddress("vice.president@https://www.360docs.net/doc/6d1272787.html,");

Address ccAddress=new InternetAddress("https://www.360docs.net/doc/6d1272787.html,dy@https://www.360docs.net/doc/6d1272787.html,");

message.addRecipient(Message.RecipientType.TO,toAddress);

message.addRecipient(https://www.360docs.net/doc/6d1272787.html,,ccAddress);

JavaMail API没有提供电子邮件地址有效性核查机制。虽然通过编程,自己能够扫描有效字符(如RFC822中定义的)或验证邮件交换(mail exchange,MX)记录,但这些功能不属于JavaMail API。

JavaMail API简介

javamail:JavaMail API简介 疯狂代码 https://www.360docs.net/doc/6d1272787.html,/ ?:http:/https://www.360docs.net/doc/6d1272787.html,/Java/Article7029.html 转载自:https://www.360docs.net/doc/6d1272787.html, JavaMailAPI是种可选、能用于读取、编写和发送电子消息包(标准扩展)您可使用这种包创建邮件用户代理(MailUserAgentMUA)类型它类似于Eudora、Pine及MicrosoftOutlook这些邮件其主要目不是像发送邮件或其他邮件传输代理(MailTransferAgentMTA)类型那样用于传输、发送和转发消息换句话说用户可以和MUA类型交互以阅读和撰写电子邮件MUA依靠MTA处理实际发送任务 JavaMailAPI设计是为收发信息提供和协议无关访问方式是把该API划分成两个部分: ?该API第个部分是本课程重点基本上是如何发送和接收独立于提供/协议消息 ?第 2个部分则使用特定协议语言如:SMTP、POP、IMAP和NNTP如果要让JavaMailAPI和服务器通信就需要为的提供协议由于Sun公司对特定协议提供有充分介绍用户可以免费获取所以本课程没有介绍创建特定协议提供内容 复习相关协议 在学习JavaMailAPI深层知识的前让我们回过头来看看在该API中使用协议,本质上有4种人们常用协议: ?SMTP ?POP ?IMAP ?MIME 您还需要了解NNTP及其他些协议理解这些协议基本原理有助于您理解如何使用JavaMailAPI而该API设计要和协议无关所以不能克服这些基础协议限制如果选用协议不支持某种功能那么JavaMailAPI也无法在其上添加这种功能(正如您会儿就会看到在操作POP协议时常常会碰到这种问题) SMTP 简单邮件传输协议(SMTP)是用于传送电子邮件机制在JavaMailAPI环境中您基于JavaMail将和您公司或Internet服务提供商(ISP)SMTP服务器通信该SMTP服务器将会把消息转发给用作接收消息SMTP服务器最后用户可通过POP或IMAP协议获取该消息由于支持身份验证所以不需要SMTP服务器是种开放转发器但需要确保SMTP服务器配置正确JavaMailAPI中没有集成用于处理诸如配置服务器以转发消息或添加/删除电子邮件帐户这类任务功能 POP POP含义是邮局协议当前版本为3也称作POP3该协议是在RFC1939中定义POP是Internet上大多数人用来接收邮件机制它为每个用户每个邮箱定义支持这是它所做全部工作也是大多数问题根源在使用POP协议时人们熟悉很多功能如查看收到了多少新邮件消息功能POP根本不支持这些功能都内置到诸如Eudora或MicrosoftOutlook的类邮件中能为您记住接收上封邮件以及计算有多少新邮件这类信息因此使用JavaMailAPI时如果想获取这类信息将需要由自己进行计算 IMAP

基于Javamail的邮件收取类(可直接使用)

package com.neusoft.mail; import javax.mail.*; import java.io.*; import java.text.*; import java.util.*; import java.util.Enumeration; public class GetMail { String POP3Host=""; //POP3服?器 String mailServerPort="110";//POP3服?器端口号String user=""; //登?POP3服?器的?号 String password=""; //登?POP3服?器的密? boolean validate = true;//是否需要身??? Session session = null; Folder folder = null; Store store = null; //无参数的?造函数 public GetMail() {} public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPOP3Host() { return POP3Host; } public void setPOP3Host(String host) { POP3Host = host;

} public String mailServerPort() { return mailServerPort; } public void mailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public String getUser() { return user; } public void setUser(String user) { https://www.360docs.net/doc/6d1272787.html,er = user; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } //?接?件服?器 public void connect() throws Exception{ //?建一个授????象 POP3Auth auth = new POP3Auth(); auth.setAccount(user,password); //取得一个Session?象 Properties prop=new Properties(); prop.put("mail.pop3.host",POP3Host); prop.put("mail.pop3.port", this.mailServerPort); prop.put("mail.pop3.auth", validate ? "true" : "false"); session = Session.getDefaultInstance(prop,auth); //取得一个Store?象

JavaMail

package com.mail.tool; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.text.DateFormat; import java.util.Date; import java.util.Properties; import java.util.StringTokenizer; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Part; import javax.mail.Session; import javax.mail.Store; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import com.mail.bean.MailBean; import https://www.360docs.net/doc/6d1272787.html,erBean; import com.mail.dao.ReceiveDao; import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; public class MailManager { public int getUnreadCount(UserBean user){//读取未读邮件的个数,POP3没有此功能int count=0; try{ Properties props=new Properties();//创建一个空的配置 Session mailSession = Session.getInstance(props);//获取一个Session的实例

基于Javamail的邮件收发系统-使用说明

基于Javamail的邮件收发系统使用说明书 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:Eclipse3.4 运行环境:PC上需安装JDK1.6,且正确配置环境变量。 系统基本功能如下: (1) 收取并显示POP3邮件服务器上指定邮箱的邮件; (2) 使用SMTP邮件服务器发送邮件; (3) 邮件附件的发送与接受; (4) 删除邮件; 具体操作步骤如下: 1、打开javamailsystem文件夹,找到javamail.jar可执行文件,双击该执行文件,即可打开 Javamail邮件收发系统客户端软件。进入该系统后,首先选择“POP3/SMTP设置”按钮,对收发邮件所需的邮件服务器主机、收发邮件账号及密码信息进行设置。 图1-1邮件客户端主界面 设置举例如下:

POP3属性 POP3服务器:https://www.360docs.net/doc/6d1272787.html,(或https://www.360docs.net/doc/6d1272787.html,或https://www.360docs.net/doc/6d1272787.html,) Email地址:shinning191@https://www.360docs.net/doc/6d1272787.html,(ceshi2009ok@https://www.360docs.net/doc/6d1272787.html,、qiufeng006@https://www.360docs.net/doc/6d1272787.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) SMTP属性 SMTP服务器:https://www.360docs.net/doc/6d1272787.html,(或https://www.360docs.net/doc/6d1272787.html,或https://www.360docs.net/doc/6d1272787.html,) Email地址:shinning191@https://www.360docs.net/doc/6d1272787.html,(ceshi2009ok@https://www.360docs.net/doc/6d1272787.html,\qiufeng006@https://www.360docs.net/doc/6d1272787.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) 在对SMTP/POP3进行设置的时候,由于系统的缺陷,需要先对POP3进行属性设置,然后确定关闭该对话框;重新打开属性设置对话框,对SMTP进行属性设置,确定。这样便可以正确设置完邮件服务器的属性。 此系统对上述设置的信息具有存储功能,在这里,我们采用属性文件的形式存储SMT P 和POP3邮件服务器属性设置。相关属性值分别保存在pop3.properties和smtp.properties文

基于javamail的电子邮件收发系统-学位论文

目录 第1章概述 ............................................. 错误!未定义书签。 1.1研究目的和意义 ......................................................................... 错误!未定义书签。 1.2国内外发展趋势和现状 (2) 1.3 系统特点 .................................................................................... 错误!未定义书签。第2章相关技术和工具简介 (6) 2.1 Swing简介 (6) 2.2 Java Mail简介 (6) 2.3 Java平台简介 (7) 2.4 Eclipse简介 (7) 第3章系统需求分析和总体设计 (9) 3.1用户对电子邮件系统的需求 (9) 3.2产品可行性分析 (10) 3.3系统总体设计...................................... 错误!未定义书签。 3.3.1电子邮件系统的功能 (12) 3.3.2电子邮件收发过程 (13) 3.3.3服务器参数的设置 (14) 第4章详细设计 (15) 4.1 登录功能的设计 ............................................................................... 错误!未定义书签。 4.2发送邮件的设计 ......................................................................... 错误!未定义书签。 4.3接收邮件的设计 ......................................................................... 错误!未定义书签。 4.4邮件管理的设计 ......................................................................... 错误!未定义书签。第5章系统功能的编码实现 .............................. 错误!未定义书签。 5.1用户登录界面的实现 ................................................................. 错误!未定义书签。 5.2主界面的实现 (19) 5.3 邮件配置界面的实现 (20) 5.4 发送邮件界面的实现 (21)

Java邮件开发

第二章邮件传输协议 SMTP协议:简单邮件传输协议,它定义了邮件客户端于SMTP服务器之间,以及两台SMTP服务器之间的通信规则。SMTP协议的通信双方采用一问一答的命令/响应形式进行对话。 命令: Ehlo Auth Mailfrom: Rcptto: Data Quit 我们来看一个例子: 因为我们的用户名和密码,是需要加密的,所以我们先把用户名和密码加密,程序如下:import java.io.*; import sun.misc.BASE64Encoder; public class Base64Util { public static void main(String [] args) throws IOException{ System.out.print("请输入用户名:"); 更多的内容https://www.360docs.net/doc/6d1272787.html,/en/ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String username=in.readLine(); System.out.print("请输入密码:"); String password=in.readLine(); BASE64Encoder encoder=new BASE64Encoder(); System.out.println("编码后的用户名:"+encoder.encode(username.getBytes())); System.out.println("编码后的密码为:"+encoder.encode(password.getBytes())); } } 输入用户名和密码以后,会把加密后的用户名和密码给出来,然后我们打开命令提示符: 这个指令的意思,就是连接到https://www.360docs.net/doc/6d1272787.html, 25是段口号。 返回220,表示成功连接。

基于Javamail的邮件收发系统-任务书

信息科学与工程学院 09 届本科生毕业设计(论文)任务书 学院信息科学与工程 学院 专业 计算机科学与技术 (师范) 班级 学号学生姓名指导教师 一、论文题目 基于Javamail的邮件收发系统 二、内容和要求 1.总体目标及性能(参数)要求 (1)系统功能基本完善。 (2)系统具有良好的用户界面。 (3)系统具有较好的人机交互性、易于使用。 (4)系统可靠、稳定,具有一定的应用价值。 2.研究内容及拟采用的技术路线 ●研究内容: (1)邮件服务器的工作原理。 (2)DNS服务器的工作原理。 (3)SMTP、POP3、MIME协议。 (4)设计并实现基于Javamail的邮件收发系统,要求系统具有邮件接收、发送等基本功能。 ●采用的技术路线: (1)开发工具采用Java+JavaMail API。 (2)数据库采用MySQL或SQL Server。

3.参考文献(10篇以上) [1] Java邮件开发详解。张孝祥。电子工业出版社,2007。 [2] Java高级程序设计。王路群主编。中国水利水电出版社, 2006 。 [3] Java课程设计。黄明, 梁旭, 周绍斌编著。电子工业出版社, 2006。 [4] Java开发与应用教程。王吴迪, 赵枫朝等编著。电子工业出版社, 2006。 [5] Java程序设计大学教程。刘艺等编著。机械工业出版社, 2006。 [6] Java数据库高级编程宝典。陈天河编著。电子工业出版社, 2005。 [7] Java程序设计与应用开发。於东军等编著。清华大学出版社, 2005。 [8] Java语言程序设计实训。赵海廷主编。武汉大学出版社, 2005。 [9] Java program design。Cohoon, James P.,Davidson, Jack W。McGraw-Hill Higher Education, 2004。 [10] Thinking in Java。Eckel, Bruce。Prentice Hall, c2000。 [11] Learning Java。Niemeyer, Patrick.,Knudsen, Jonathan。O'Reilly, 2000。

如何用javamail定时发送邮件

如何用javamail定时发送邮件 例如:我想在3天后的中午12:00发送给别人邮件 还有就是每天的中午12点给别人发送邮件,而且这些个邮件地址是从一个jsp传来的 例如今天给a@https://www.360docs.net/doc/6d1272787.html,发,当执行过jsp后,jsp输入的是b@https://www.360docs.net/doc/6d1272787.html,,以后就给b@https://www.360docs.net/doc/6d1272787.html,发 而且jsp传过来的邮件地址数目是多个的,每天需要给多人在固定一时间内发邮件 定时触发器 有许多开源项目 Timer + 多线程 我在这里使用的Java计时器框架是由Java开发人员Tom White构建的一个简单通用的计划框架,以用于执行任意复杂的计划任务,他使我们实现灵活的计划策略成为可能。Java计时器框架的本身在这里不作过多的介绍,详细信息在IBM developerWorks中国网站。 我们主要讨论如何利用Java计时器框架在Solaris平台来实现邮件的定时发送、JavaMail发送邮件的实现以及在Solaris平台上如何以后台方式运行整个邮件定时发送的应用。 下载本文的源代码,参考具体实现。 1.1 形成schedule.jar包 schedule.jar包中的目录结构如下: 我们将数据库的连接、日志、邮件和计划框架的通用类形成一个与具体应用要求无关的schedule.jar包。利用javac将编译生成的目标class文件存在当前目录的classes文件夹下,然后通过jar -cvf schedule.jar ./*命令生成schedule.jar包。 1.1.1 Oracle数据库连接的建立 位于db目录下,通过thin方式建立与Oracle的数据库连接,具体的实现参见《J2EE应用中与Oracle数据库的连接》一文。 1.1.2 日志 以后台方式定时运行的应用应特别注意日志的功能,因为只有通过分析详细的日志信息才能准确掌握应用的执行情况。在logs目录下为Logs.java文件,代码如下: package com.j2ee.logs; import java.io.*; import java.util.*; import java.text.SimpleDateFormat;

JavaMail发送邮件实例-给多人发送、抄送

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun 发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。 虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail 文件。 JavaMail包中用于处理电子邮件的核心类是: Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。 关键技术: 1、MimeMessage的setRecipients方法设置邮件的收件人,其中 Message.RecipientType.TO常量表示收件人类型是邮件接收者, https://www.360docs.net/doc/6d1272787.html,常量表示收件人类型是抄送者, Message.RecipientType.BCC常量表示收件人的类型是密送着。 2、在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。 SourceCode: import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart;

基于javaMail电子邮件系统的设计(含源文件)

课程设计I报告题目:电子邮件系统设计 专业软件工程 学生姓名 ****** 班级学号 ********** 指导教师******** 指导单位计算机学院软件工程系日期2009.6.10——2008.6.22

1、课题名称 电子邮件系统设计 2、课题内容 设计一个电子邮件系统,包括客户端和服务器端的设计、邮件处理过程建模和具体功能的实现等。 3、系统分析 电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到 ISP 的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到ISP 的邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。 现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。 本系统分析中给出了电子邮件服务器和电子邮件客户端的简介,同时给出了本次试验中客户端的主要功能和总体框图。 邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收服务器)。 发送邮件服务器使用邮件发送协议,现在常用的是SMTP,所以通常发送邮件服务器也称为SMTP服务器; 接收邮件服务器使用接收邮件协议,常用的有POP3协议和IMAP协议,所以通常接收邮件服务器也称为POP3服务器或IMAP服务器。 SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议,是Internet传送E-mail的基本协议,也是TCP/IP协议组的成员。 SMTP协议解决邮件系统如何通过一条链路,把邮件从一台机器传送到另一台机器上的问题。 SMTP协议的特点是具有良好的可伸缩性,这也是它成功的关键。它既适用于广域网,也适用于局域网。 SMTP协议由于非常简单,使得它得到了广泛的运用,在Internet上能够发送邮件的

JavaMail技术

JavaMail技术 1.JavaMail介绍 现如今,使用email发送邮件非常普遍和常见,平时公司内部交流,网站上信息通知,注册时激活验证等地方都在使用邮件,Java也有关于发送和接收邮件技术封装。Java中提供的技术即就是要给大家介绍的JavaMail技术。 2.邮件协议 2.1.邮件服务器简介 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器和接收邮件的服务器。 发送邮件的服务器使用发送协议,现在常用的是SMTP协议。所以,通常发邮件的服务器也称为SMTP服务器。 接收邮件的服务器使用接收协议,现在常用的是POP3协议或IMAP协议,所以通常也被称为POP3或IMAP服务器。 目前经常见到的服务器为SMTP和POP3服务器。 例如:在注册了126的邮箱之后,它的发邮件服务器为https://www.360docs.net/doc/6d1272787.html,:25,而收邮件服务器则为https://www.360docs.net/doc/6d1272787.html,:110.(冒号后面的为端口号)。 当然,发邮件服务器和收邮件服务器也可能是同一台主机,但端口号一定不相同。默认发邮件服务器的端口为25,收邮件的端口为110。 2.2.邮件收/发协议 SMTP协议-发邮件协议 全称为Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与SMTP 服务器之间、以及两台SMTP服务器之间的通讯规则。端口一般为25. POP3协议-收邮件协议

全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。端口一般为110. IMAP协议-对POP3的扩展 全称为Internet Message Access Protocal(Internet消息访问协议),它是对POP3协议的一种扩展,定义了邮件客户端软件与IMAP服务器的通讯规则。 3.Apache的JavaMail使用 邮件客户端的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件。Sun公司制定了一套API,它封装了邮件通信的各种协议。为Java开发者提供了收发电子邮件的公共接口。但是由于Sun公司提供的那些接口比较麻烦,Apache对sun公司的技术进行了封装,使用Apache的mail技术,可以简单方便的发送邮件。 3.1.下载javamail的jar包 下载地址:https://www.360docs.net/doc/6d1272787.html,/proper/commons-email/download_email.cgi 解压jar包,在项目中导入jar包。

基于JavaMailAPI的Web邮件系统开发

第28卷 第6期 2006年6月武 汉 理 工 大 学 学 报JOURNAL OF WUHAN UNIVERSITY OF TECHNOLOGY Vol.28 No.6 Jun.2006 基于JavaMail API 的Web 邮件系统开发 钟 珞,刘 玲,夏红霞 (武汉理工大学计算机科学与技术学院,武汉430070) 摘 要: E mail 通信在Java 服务器编程中占有非常重要的地位。阐述了Web 邮件系统所涉及的几个协议,对J2EE JavaM ail A PI 的结构框架和核心类进行了介绍,描述了系统架构,并给出了其中发送邮件功能的详细设计过程。Java M ail 结合JSP 的结构化特性,易于实现灵活高效、方便移植的Web 邮件应用程序。 关键词: JavaM ail AP I; 电子邮件; 邮件发送 中图分类号: T N 915.04文献标志码: A 文章编号:1671 4431(2006)06 0084 03 Development Research of Web Mail System Based on JavaMail API Z H ON G L uo ,LI U L ing,XIA H ong x ia (School o f Computer Science and T echnology ,Wuhan U niv ersity of T echno logy,Wuhan 430070,China) Abstract: E mail is the most important and ex tensive applicat ion of I nternet,it stands a v er y important position in Java server pr ogramming.T his paper first ex patiated on some protocols come down to the Web mail system,and then introduced the architecture and core classes of J2EE JavaM ail A PI.After that,the article presented the system framew ork and t he detailed de sign pr ocess of mail sending.In co nclusion,it can easily implement flexible,high effective and transplantable W eb mail applica tions with JavaM ail and structured JSP. Key words: JavaM ail API ; E mail; mail sending 收稿日期:2006 03 23. 基金项目:教育部高校行动计划智能科学与技术(2004XD 03).作者简介:钟 珞(1957 ),男,教授,博士生导师.E mail:liuling com 随着互联网的发展,人们使用最多的服务之一就是电子邮件,用户最初只能通过Outlook 、Foxm ail 等客户端软件来收发自己的邮件。随着Web 邮箱的面世,其快捷、方便的优点吸引了众多的网络用户。 对一般的电子邮件使用者来说,E mail 非常简单地执行邮件传输,但是对于编程人员来讲E mail 的打包、传输、发送和接收是很复杂的。这要涉及到很多协议,主要有发送电子邮件的SMT P 协议、用来接收电子邮件的POP3协议和Internet 邮件访问协议IMAP 以及多用途Internet 邮件扩充协议M IM E 。JavaM ail 就是Sun 发布的用来处理这些问题的统一的API,JavaMail 是J2EE 的核心部分,它定义一组抽象类和接口,通过Java 应用程序支持邮件系统。它封装了电子邮件的基本协议,编程人员可以不用自己去处理那些复杂的协议了。JavaMail API 可以使用在客户端也可以使用在服务器端。 1 相关邮件协议 简单邮件传输协议(SMT P)是为了保证电子邮件的可靠和高效传送,它通过TCP/IP 网络把消息从一个邮件服务器移动到其它邮件服务器(见图1)。SM TP 是Internet 电子邮件服务的基础,在TCP 上,它使用端口25进行传输,但是个简单的子协议,除传输邮件外不能完成诸如差错检测等其它功能,这些功能由POP 和IMAP 等高级邮件协议负责完成。邮局协议(POP)是个地位牢固的开放邮件标准。它依靠SMTP

基于JavaMail的邮件客户端程序的设计与实现

网络通讯与安全 电脑知识与技术 电脑知识与技术 1引言 一个完整的邮件系统由邮件客户端程序和邮件服务器程序组成,实现邮件系统所使用的邮件协议为MIME、SMTP、POP3和IMAP4协议,其中MIME协议用于定义邮件格式,SMTP协议用于传输邮件,POP3和IMAP4协议用于从邮件服务器接收邮件。 邮件客户端程序主要实现用户和邮件服务器的交互,用户使用它可以创建、发送、阅读、管理自己的邮件。目前流行的邮件客户端程序很多,比如大家熟悉OutLookExpress等。本文将介绍一种基于JavaMail的邮件客户端程序的设计与实现方法。 2JavaMail JavaMail是sun公司提供的用来开发邮件系统的软件包,它属于标准扩展API,仅包含在JDK1.4以上的版本和J2EE以上的 版本中 。JavaMail的体系结构如图1所示。 JavaMailAPI封装在mail.jar包中,其核心由抽象类层与Internet邮件类层两个部分组成(见图1)。其 中,抽象类层定义了与平台、底层协议无关的Email操作界面,其相关的类与接口定义在javax.mail包中;而Internet邮件类层则用于支持InternetMIME(RFC822)的标准,相关的类与接口被封装在javax.mail. internet包中。 此外,为了支持MIME标准,实现对多种媒体邮件格式的支持,JavaMailAPI中使用了JavaBeans的技术,需要Java激活框架的支持,因此,进行邮件系统开发时还需要用到JAFAPI,该API封装在activation.jar包中,相关的类与接口定义在javax.acti-vation包中。 3系统设计 JavaMailAPI使邮件的发送与接收得到大大的简化。本文所开发的邮件客户端程序是在JBuilder9环境下实现的,JBuilder9自带JDK1.4.1版本,不需额外下载mail.jar邮件开发包和activa-tion.jar激活框架包。主要实现如下基本功能: (1)收取并显示POP3邮件服务器上指定邮箱的邮件;(2)使用SMTP邮件服务器发送邮件;(3)邮件附件的发送与接收;(4)删除邮件。 邮件客户端程序的功能界面如图2所示。 图2邮件客户端程序的功能界面4系统技术实现 3.1环境配置和界面搭建 在JBuilder9中,创建工程后,首先为工程添加JavaMail和JavaBeansActivationFrameWork开发包,然后使用swing图形工具包搭建各个程序界面,并在使用JavaMailAPI的类文件中导入相关的API包,即在程序的开头添加下面的语句: importjavax.mail.*;importjavax.internet.*;importjavax.activation.*; 3.2设置邮件服务器参数的实现 用户在收发邮件时,需要设置邮件服务器主机、 收发邮件帐户及密码等信息。因此系统提供对上述信息的设置与存储的功能,这里,我们采用属性文件的形式存储SMTP和POP3邮件服务器属性设置。其文件名为smtpPop3.properties,位于工程的根目录下,可使用java.uitl.Properties类的setProperty()方法和getProperty()方法对属性文件中的属性内容进行存取。本系统smtpPop3.properties文件的内容格式如下: smtpPop3.pop3host=pop3邮件服务器地址(如pop3.sina.com.cn)smtpPop3.smtphost=smtp邮件服务器地址(如smtp.sina.com.cn)smtpPop3.address=收发邮件帐户(如xyz@sina.com)smtpPop3.username=用户名(如xyz)smtpPop3.password=密码(如797989)3.3创建与发送邮件功能的实现 发送邮件的基本过程为:点击主界面中的【创建邮件】 按钮后,弹出新邮件编辑窗体,在该窗体中编辑新邮件,选择邮件附件 收稿日期:2006-04-04 作者简介:杨淑萍(1963-),女,山西怀仁人,讲师,硕士,研究方向,电子商务技术;聂哲(1970-),男,湖南益阳人,副教授,硕士,研究方向,电子商务技术。 基于JavaMail的邮件客户端程序的设计与实现 杨淑萍,聂哲 (深圳职业技术学院软件工程系,广东深圳518055) 摘要:本文简述了JavaMail及其结构,详细阐述了使用JavaMail开发邮件客户端程序的方法,并给出了主要的实现代码,为邮件应用程序的进一步开发提供了基础。 关键词:JavaMail;邮件客户端程序;SMTP;POP3中图分类号:TP311文献标识码:A文章编号:1009-3044(2006)20-0106-03 DesignandImplementationofMailClientProgramBasedonJavaMail YANGShu-ping,NIEZhe (DepartmentofComputerSoftware,ShenzhenPolytechnic,Shenzhen518055,China) Abstract:ThispaperintroducesJavaMailandexpoundsthedevelopingmethodofmailclientprogramwithJavaMailindetail,Italsogivesoutthemainimplementcodesofmailclientprogrameandprovidesbaseofdevelopingmailapplication. Keywords:avaMail;mailclientprogram;SMPT;POP3 图1JavaMial体系结构106

基于Javamail的邮件收发系统论文

基于JavaMail的邮件收发系统 摘要 电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用它的人数势必会继续增加。本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP协议和POP协议从底层进行开发,利用JavaMail API为收发邮件提供与协议无关的访问。SMTP(简单邮件传输协议)是专门用来发送邮件的。POP (邮局协议)是专门用于接收邮件的。JavaMail API是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。 本文主要可分为四个部分。第一部分介绍了Javamail邮件系统的意义和现状。第二部分具体介绍了几种相关协议和Javamail API。第三部分主要介绍了系统的开发工具JA V A语言、Eclipse及其安装过程与配置方法。第四部分详细阐述了Javamail邮件收发系统的实现过程。 关键词:SMTP,POP,JA V AMAIL,邮件收发

MAIL SYSTEM BASED ON JAVAMAIL ABSTRACT E-Mail play a very important role in modern times. More and more people are using it, and the number of it will larger and larger. This paper introduced the javamail system's development background, analyzed and compared some existing maturity Email system at home and abroad , summarized their advantages and disadvantages, studied deeply with the javamail technology , proposed and designed out the mail system based on javamail. This system used POP protocol and SMTP protocol to develop from the bottom, used JavaMail API to provide the visit which has nothing to do with the agreement for send and receive email. SMTP (Simple Mail Transfer Protocol) is designed to send a message. POP (Post Office Protocol) is designed to receive mail. JavaMail API is an standard expansion package which is optional, can be used to read, write and send electronic messages. This paper can be divided into four parts. The first part introduced javamail email system's significance and status. The second part introduced several related agreements and JavaMail API. The third part mainly introduced system's development tools JA V A language , Eclipse and their installation process and configuration method. The fourth part detailed javamail email system's realization process. Keywords:SMTP, POP, JA V AMAIL, Email to send and receive

java收取和发送邮件 ssl

Java 收取和发送邮件+SSL 这里使用Gmail 邮箱测试1. 收取邮件 [java] view plaincopypackage lius.javamail.ssl; import java.io.UnsupportedEncodingException; import java.security.*; import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeUtility; /** * 用于收 取Gmail邮件* @author Winter Lau */ public class GmailFetch { public static void main(String argv[]) throws Exception { Security.addProvider(new https://www.360docs.net/doc/6d1272787.html,.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "https://www.360docs.net/doc/6d1272787.html,.ssl.SSLSocketFactory"; // Get a Properties object Properties props = System.getProperties(); props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", "995"); props.setProperty("mail.pop3.socketFactory.port", "995"); //以下步骤跟一般的JavaMail操作相同Session session = Session.getDefaultInstance(props,null); //

相关主题
相关文档
最新文档