`
wlhok
  • 浏览: 56882 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaMail应用[转]

    博客分类:
  • Java
阅读更多
      首先介绍几个邮件传输协议,虽然说不了解这些协议也可以实用JavaMailAPI,但是我始终认为,如果不透彻的了解一种技术的本质,即使会用了也是照葫芦画瓢,换一种模式也许就玩不转了.

    SMTP:简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)RFC821定义,它定义了发送邮件的机制,JavaMail环境中,基于JavaMail的程序将和因特网服务供应商ISP(internet Service Provider s)SMTP服务器通信.SMTP服务器会中转消息给接收方SMTP服务器以便最终让用户经由POP或者IMAP获得.

    POP:代表邮局协议(Post Office Protocol).目前的版本是3.所以一般都称之为POP3.这个协议是由RFC1939定义的.POP是一种机制,因特网上多大数用户用它得到邮件.它规定每个用户一个邮箱的支持.使用POP协议的时候,用户的许多性能并不是由POP协议支持的,如查看几封新邮件消息这个功能,这些功能内建在如EudoraMicrosoftOutlook之类的程序中,它们记住一些事.所以在用JavaMail的时候,如果你想要这些信息,你就必须自己算了.

    IMAP:是更高级的用户接收消息的协议,被定义在RFC2060,IMAP代表因特网消息访问协议(Internet Message Access Protocol),目前用的版本是4,所以也叫做IMAP4.在用到IMAP的时候,邮件服务器必须支持这个协议,不能仅仅把使用POP的程序用于IMAP,并指望它支持IMAP所有性能.

    MIME:是因特网邮件扩展标准(Multipurpose Internet Mail Extensions).它不是邮件传输协议,但是对于传输的内容的消息,附件以及其他的内容定义了格式.可以理解成一个定义合适的标准.

    NNTP:因为JavaMail将供应商和所有其它的东西分开了,您就能轻松添加额外的协议支持.NNTP 就是网络新闻传输协议.

   

JavaMailAPI可以到 http://java.sun.com/products/javamail/index.html 进行下载,并将mail.jar添加到classpath即可.

    JAF框架可以到 http://java.sun.com/products/javabeans/glasgow/jaf.html 进行下载,并将activation.jar添加到classpath即可.

    如果实用J2EE就没由什么特定非要用基本的JavaMailAPI.J2EE的类就能处理了.只要确保j2ee.jar文件在classpath中就Ok.

<o:p> </o:p>

         JavaMail发送邮件的简单步骤:

1,获取系统Properties.

Properties props = new Properties();

2,将您的SMTP服务器名添加到mail.smtp.host关键字的属性中.

Props.pout( “ mail.smtp.host ” ,host);

3,获取基于Properties Session对象.

Session session = Session.getDefaultInstance(props,null);

4,Session创建一个MimeMessage.

MimeMessage message = new MimeMessage(session);

5,设置消息from.

Message.setForm(new InternetAddress(from));

6,设置to.

Message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));

7,设置消息主题.

message.setSubject( “ HelloJavaMail ” );

8,设置消息内容.

Message.setText( “ Welcome to JavaMail ” );

或者

Message. setContent ( “ Welcome to JavaMail ” );

9发送消息.

Transport transport = session.getTreansport( “smtp” );// 指定的协议

transport.connect(host,username,password);// 连接到SMTP服务器

Transport.send(message); // 发送消息

10,在编译用运的时候传递MSTP服务器,from地址,to地址.

<o:p> </o:p>

         JavaMail主要的类介绍

         Session类定义了一个基本的邮件会话,所有的其他类都是由这个session才得意生效的,Session对象用java.util.Properties对象获取信息,如邮件服务器,用户名,密码及整个应用程序中共享的其他信息.类的构造器是此有的,private.它能用getDefaultInstance()方法来共享.获取Session对象的方方法如下:

Properties props = new Properties();

Session session = Session.getDefaultInstance(props,null);

Null参数都是Authenticator对象,在这里没有使用.

对于大多数情况,共享的session已经足够用了.

<o:p> </o:p>

         Message消息类,在获得了Session对象后,就可以继续创建要发送的消息.因为Message是个抽象类,您必须用一个子类,多数情况下为java.mail.internet.MimeMessage.这个能理解成MIME类型和头的电子邮件消息.正如不同的RFC中定义的,虽然在某些头部域非ASCII字符也能被编译,但是Message头只能被限制用US-ASCII字符.要创建一个Message请将Session对象传递给MimeMessage的构造器.

MimeMessage message = new MimeMessage(session);

一旦获得消息,就可以设置各个部分了.最基本的就是setContent()方法,例如

message.setContent( “ Hello ” , ” text/plain ” );

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

setSubject()方法设置subject(主题);

message.setSubject(“主题“);

如果要观察传到邮件服务器上的邮件命令,请用session.setDubug(true)设置调试标志. <o:p></o:p>

<o:p> </o:p>

Address地址类,Message一样也是一个抽象类,一旦创建了SessionMessage并将内容填入消息后,就可以用Address确定信件的地址了,javax.mail.internet.

InternetAddress.若创建的地址只包含电子邮件地址,只要传递电子邮件地址给构造器就可以了.例如:Address address = new InternetAddress(“wlhok@163.com”);

若希望名字挨着电子邮件现实,就可以把它传递给构造器,如下:

Address address = new InternetAddress(“wlhok@163.com”, “我心依旧”);

需要为消息的from域和to域创建地址对象,除非邮件服务器阻止,没有什么能阻止你发送一段看上去是任何人的消息了呵呵.一旦创建address将他们域消息连接方法有两种,如要要识别发件人的就可以用setFrom()setReplyTo方法.然后message.setFrom(address);

<o:p> </o:p>

需要实用多个from地址的就用addFrom()方法.例子如下:

Address[] address = ,.,. ; // 例如InternetAddress.parse(mailFrom);

message.addFrom(address);

若要识别消息recipient收件人,就要实用addRecipient()方法了.例如:

message.addRecipient(type,address)

<o:p> </o:p>

         Authenticatorjava.net类一样,JavaMailAPI也可以利用Authentcator通过用户名密码访问受保护的资源.对于JavaMail来说,这些资源就是邮件服务器,Authentcator类在javax.mail包中.要使用Authenticator,首先创建一个抽象的子类,并从

GetPasswordAuthentication方法中返回passwordAuthentication实例,创建完成后,您必须向session注册Authenticator,然后在需要认证的时候会通知它,其实说白了就是把配置的用户名和密码返回给调用它的程序.例如:

Properties props = new properties();

Authenticator auth = new MailAuthenticator(); // 接口声明,创建自己新类的实例.

Session session = Session.getDefauItInstance(props,auth);

<o:p> </o:p>

         Transport消息发送传输类,这个类用协议指定的语言发送消息,通常是SMTP,它是抽象类,它的工作方式与Session有些类似,尽调用静态方法send()方法,OK.例如:

Transport.send(message);

或者也可以从针对协议的会话中获取一个特定的实例,传递用户名和密码.发送消息,然后关闭连接,例如:

message.saveChanges();

transport transport = session.getTreansport( smtp );//指定的协议

transport.connect(host,username,password);

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

transport.close();

<o:p> </o:p>

StoreFoldersession获取消息,与发送消息开始很相似,但是在session得到后,很可能实用用户名和密码或实用Authenticator连接到一个Store.类似于Transport,也是一样要告诉store用什么协议.例如

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,还可以用其他的文件夹.

当读到了具体的message以后,就可以用getContent来获取内容,或者用writeTo()将内容写入流,getContent()方法只能得到消息内容,writeTo()的输出却包含消息头.

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

一旦读取完毕邮件,要关闭storefolder的连接.

folder.colse(boolean);

store.colse();

传递给folderclose()方法的boolean参数表示是否清楚已删除的消息从而更新folder.

<o:p> </o:p>

<o:p> </o:p>

分享到:
评论

相关推荐

    JavaMail组件简单应用

    对于初学者来说,理解和掌握JavaMail组件的基本应用是至关重要的,因为这将帮助他们构建出能够处理邮件交互的系统。本文将深入探讨JavaMail的核心概念、主要组件以及如何在实际项目中进行简单应用。 1. **JavaMail ...

    javamail(带界面的javamail)

    JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...

    javamail 所有jar包

    在开发JavaMail应用时,`activation.jar` 提供了对MIME消息支持的必要组件。 2. **mail.jar**:这个文件是JavaMail的核心库,它包含了所有与邮件处理相关的类和接口。JavaMail API 提供了一系列的类和接口,如`...

    JavaMail-1.5 API

    使用JavaMail API可以编写出跨平台的邮件处理应用,而且由于Java的跨平台特性,使用JavaMail API开发的邮件应用可以部署在Windows、Linux、Unix、Mac OS等多种操作系统上。 文件中提到的“Evaluation Purposes”和...

    javamail的jar包:javamail-1.6

    JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。这个库提供了丰富的API,使得开发者可以方便地执行发送、接收、读取和管理邮件的任务。`javamail-1.6`是JavaMail的一个版本,它包含了从早期版本中继承的...

    JavaMail应用实例说明:简单(HTML)邮件的发送 javaMail基础教程下载

    JavaMail是一种广泛使用的Java库,它允许开发人员在Java应用程序中发送和接收电子邮件。这个教程主要关注的是如何使用JavaMail发送简单的HTML邮件,这在现代应用程序中非常常见,因为HTML邮件可以提供更丰富的格式和...

    javamail应用

    在JavaMail的应用中,我们可以实现发送带有附件的邮件,以及利用XStream库将邮件对象转换为XML并保存到本地。此外,JavaMail还支持对邮件进行操作,如删除、查看和恢复。 ### JavaMail核心对象 #### 1. Session `...

    JavaMail 1.6.0 Final Release

    JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的能力。这个“JavaMail 1.6.0 Final Release”是 JavaMail 的一个重要版本,它包含了对 SMTP(简单邮件传输协议)、IMAP...

    javamail.jar,javamail资源包

    `javamail.jar` 文件是JavaMail的核心库,包含了所有必要的类和接口,使得开发者可以在他们的应用程序中集成邮件功能。 在JavaMail中,有几个关键的概念和组件: 1. **Session**: 这是JavaMail中的顶级对象,代表...

    JavaMail相关jar包

    它提供了`Session`、`Message`、`Address`、`Store`和`Transport`等关键类,是构建邮件应用的基础。 使用这两个jar包时,开发者需要将它们添加到项目类路径中,然后可以开始编写邮件处理代码。以下是一个简单的示例...

    JavaMail相关Jar包

    在Java应用程序中发送电子邮件,通常需要依赖特定的库,JavaMail 就是其中之一。本主题将详细介绍JavaMail以及与之相关的`javamail1_4_5`和`jaf-1_1_1`这两个Jar包。 `javamail1_4_5.jar`是JavaMail的核心库,包含...

    javamail应用三(接收邮件)参照.pdf

    JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。在本文中,我们将深入探讨如何使用JavaMail API接收邮件,特别关注POP3和IMAP协议的使用。接收邮件的过程涉及几个关键步骤,包括建立会话、连接邮件...

    javamail-1.4.3源码

    2. **Session 类**:每个JavaMail应用都需要一个`Session`实例,它管理与邮件服务器的连接参数,如主机名、端口、认证信息等。`Session`是线程安全的,可以全局配置。 3. **Store 类**:用于连接邮件服务器并管理...

    简单javamail的实现(HelloWorld)

    这个“简单javamail的实现(HelloWorld)”的教程将引导我们通过创建一个基础的JavaMail应用,这通常被称为“HelloWorld”示例,因为它标志着我们对JavaMail API的初步理解和使用。 JavaMail API 提供了广泛的类和...

    JavaMail完整JAR包

    JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。这个完整JAR包包含了所有必要的组件,使得开发者能够方便地实现发送、接收、读取以及管理电子邮件。以下是JavaMail的一些关键知识点: 1. **...

    封装javamail

    JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。这个封装javamail的项目旨在简化邮件发送和接收的过程,通过提供自定义的接口和类,使得开发者可以更方便地利用JavaMail API。 首先,我们需要了解...

    JavaMail邮件发送源码 非常简单

    JavaMail是一种在Java应用程序中发送和接收电子邮件的标准API,它为开发者提供了强大的功能,使得处理邮件变得简单而高效。在JavaMail中,我们主要利用 javax.mail 和 javax.mail.internet 这两个包中的类来实现邮件...

    javamail 视频源码 第一部分

    10. **实战应用**:课程可能还会涵盖如何将 JavaMail 集成到实际项目中,如 web 应用、定时任务服务等,以及如何处理复杂的邮件场景,如邮件模板、邮件队列和批量发送等。 通过学习这个教程,开发者不仅可以掌握 ...

Global site tag (gtag.js) - Google Analytics