JAVAMAIL核心类介绍
JAVAMAIL(所需类包: mail.jar activation.jar)
JavaMail API 核心类包括:Session,Address,Message,Authenticator,Transpor,Store,Folder.
1.javax.mail.Session
Session类定义了与远程邮件系统通信的邮件会话(MailSession).JavaMail会话仅仅用于存储与服务器建立连接会话相关的逻辑Session类是JavaMail API最高层入口类。Session对象管理配置选项行和用于与邮件系统交互的用户认证信息,它使用Java.util.Properties对象配置邮件会话的属性,如邮件服务器,用户名,密码及整个应用程序中共享的其它信息。(Session本身并不处理任何授权操作,他只是存储这些授权的信息)
Session类的构造器是私有的,他不能被继承。他有两个静态方法:getInstance 和getDefaultInstance来获取Session实例,前者创建的不能被其它JVM共享的会话实例,后者创建的可以被其它JVM共享的会话实例。
Session实例使用的属性
mail.transport.protocol 邮件传输的协议,getProtocol()方法时返回默认传入协议
mail.smtp.host 使用的默认主机
mail.smtp.port 主机使用的端口 25
mail.user 未指定用户时,传输和存储使用的默认用户 User.name
mail.from 发送者的邮件地址
mail.store.protocol 存储协议,getStore()方法返回默认的存储协议
mail.protocol.host 替代指定协议的mail.host
mail.protocol.user 替代指定协议的mail.user
mail.debug 用于调试会话
mail.smtp.auth true/false 邮件服务器是否要验证
Properties props
=
new
Properties();
//
设置邮件会话的属性
props.put(
"
mail.transport.protocol
"
,
"
smtp
"
);
props.put(
"
mail.smtp.host
"
,
"
smtp.usish.com
"
);
props.put(
"
mail.smtp.port
"
,
"
25
"
);
props.put("mail.smtp.auth","true");
//
获得邮件会话对象
mailSession
=
Session.getDefaultInstance(props);
//
不使用认证
mailSession
=
Session.getDefaultInstance(props,authenticator);
//
使用认证
2.javax.mail.Authenticator
Session.getDefaultInstance(props,authenticator) 创建会话时使用Authenticator对象以进行认证,如果传入null对象,那么和不使用认证的调用方式一致。
Authenticator代表一个可以为网络连接获取认证信息的对象,它通常通过提示用户输入用户名和密码来收集认证信息,使连接可以访问受保护的资源。首先创建Authenticator的一个子类,并且在会话对象创建时为会话注册该Authenticator对象。
public
class
PopupAuthenticator
extends
Authenticator{
String username
=
null
;
String password
=
null
;
public
PopupAuthenticator(){}
public
PopupAuthenticator(String name,String pwd){
username
=
name;
password
=
pwd;
getPasswordAuthentication();
}
protected
PasswordAuthentication getPasswordAuthentication() {
return
new
PasswordAuthentication(username, password);
}
}
使用这个验证类
PopupAuthenticator authenticator
=
new
PopupAuthenticator(
"
envoydada
"
,
"
dada
"
);
mailSession
=
Session.getDefaultInstance(props,authenticator);
//
使用认证
3.javax.mail.Address
Address类表示电子邮件地址,它是一个抽象类,当要表示多个地址时可以用逗号隔开。
最经常使用的子类是:javax.mail.internet.InternetAddress提供具体实现,且通常可串行化。如果创建地址只包含电子邮件地址,只要传递电子邮件地址到构造器即可。
//带其它信息的地址
InternetAddress addr = new InternetAddress();
addr.setAddress("derek_g@usish.com");
addr.setPersonal("derek Guo");
//带多MAIL地址
Address[] addrs = InternetAddress.parse("derek_g@usish.com,envoydada@126.com"); 4.javax.mail.Message
获得Session对象后,可以继续创建要发送的邮件消息,这由Message类来完成。Message实现了Part接口,它表示一个邮件消息,包含一系列属性和一个消息的内容。Message是抽象类,实际使用时必须用一个子类代替以表示集体的邮件格式。如子类javax.mail.internet.MimeMessage , 实现了RFC822和MIME标准。Message子类通常通过字节流构建其实现。
创建Message的两个构造方法:
Message message = new MimeMessage(Session session);
MimeMessage message = new MimeMessage(MimeMessage message); 获得message之后,可以设置消息的各个部分
msg.setFrom(new InternetAddress(from));//设置发件人
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));//设置收件人
msg.setRecipients(Message.RecipientType.CC,InternetAddress.parse(cc));//设置抄送人
msg.setRecipients(Message.RecipientType.BCC,InternetAddress.parse(bcc));//设置暗送人
msg.setSentDate(d);//设置发邮件的签名时间
msg.setSubject(subject);//设置邮件主题
//msg.setText(content);//纯文本发送text/plain表示纯文本,默认
msg.setContent("<meta http-equiv=Content-Type content=text/html; charset=utf-8>邮件测试内容","text/html;charset=utf-8");//html格式发送
5.javax.mail.Transport
消息发送Transport类。该类使用指定协议发送消息(通常是SMTP)。Transport是抽象类(继承自Service类)提供很多通用方法,如命名传输、连接服务器和监听传输事件等。
Transport.send(message); 发送邮件。
还可以进一步控制消息发送:
Transport transport = session.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
transport.close();
6.javax.mail.Store Store是一个抽象类,它模拟了消息存储器及其内部目录(Folder)访问协议,以存储和读取消息,其子类提供具体实现。
Store定义的存储器包括一个分层的目录体系,消息存储在目录内,。客户程序可以通过获取一个实现了数据库访问协议的Store对象来访问消息存储器,绝大多数存储器要求用户在访问前提供认证信息,connect方法执行了该认证过程。
Store store = session.getStore("pop3");//指定协议
store.connect(host,usename,password);//
7.javax.mail.Folder
Folder是一个抽象类,用于分级组织邮件,其子类提供针对具体协议的实现。
Folder代表的目录可以容纳消息或子目录,存储在目录内的消息被顺序计数(从1开始到消息总数),该顺序被称为“邮箱顺序”,通常基于邮件消息到达目录的顺序。邮件顺序的变动将改变消息的序列号,这种情况仅发生在客户程序调用Expunge方法擦除目录内设置了Flags.Flag.DELETED标志位的消息时。执行擦除操作后,目录内消息将重新编号。
客户程序可以通过消息序列号或直接通过相应的Message对象应用目录中的消息,由于消息序列号在会话中很可能改变,因此应尽可能保存Message对象而非序列号来反复引用对象。
连接到Store之后,接下来可以获取一个文件夹(Folder)。该文件夹必须先使用open()方法打开,然后才能读取里面的消息:
Folder folder = store.getDefaultFolder();
//或 : Folder folder = store.getFolder("inbox");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessage();
open()方法指定了要打开的文件夹及打开方式(如Folder.READ_WRITE)。 inbox是POP3唯一可以使用的文件夹。如果使用IMAP,还可以用其它的文件夹。
获得Message之后,就可以用getContent()获得其内容,或者用writeTo()将内容写入输出流。getContent()方法之能得到消息内容,而writeTo()的输出却包含消息头.
读完邮件之后要关闭与Folder和Store的连接:
folder.close(aBoolean);
store.close();
分享到:
相关推荐
本文将深入探讨JavaMail API的核心类,帮助你理解如何利用这些类来实现邮件的发送与接收。 1. **`Session` 类**:`Session` 是JavaMail API的基础,它代表了与邮件服务器的会话。通过`Properties` 对象设置配置信息...
- **Session**:JavaMail的核心组件,负责邮件会话的创建和配置。它管理与邮件服务器的连接,包括认证信息、属性等。 - **Message**:表示邮件实体,包含了邮件的所有信息,如发件人、收件人、主题、正文和附件等...
首先,`Mail.jar`是JavaMail API的库文件,包含了处理邮件所需的各种类和接口,如`javax.mail`包下的`Session`、`Message`、`Transport`等核心类。开发者需要将这个库添加到项目类路径中才能使用JavaMail功能。 `...
在JavaMail中,有几个核心类是开发时经常用到的,它们构成了JavaMail的核心功能。 1. `Session` 类:`Session` 是 JavaMail 的全局配置对象,它存储了邮件发送所需的参数,如SMTP服务器地址、端口、用户名、密码等...
总之,JavaMail和JavaBeans是Java平台上进行邮件处理的核心组件。它们为开发者提供了强大的功能,使处理电子邮件变得简单而高效。无论是在企业级应用还是个人项目中,这两个组件都是JavaMail开发的基石。
`Session` 类是JavaMail的核心组件,代表了一个邮件会话。每个JavaMail应用至少需要一个`Session`实例,它可以配置多个不同的会话以适应不同的邮件服务需求。`Session.getInstance()`方法用于创建一个新的会话,...
总的来说,"javamail(带界面的javamail)"项目是一个实用的示例,涵盖了JavaMail的核心功能和GUI编程的结合。它可以帮助开发者理解如何在实际应用中集成邮件服务,同时提供了一种友好的用户交互方式。通过研究这个...
JavaMail的核心组件包括: 1. **MIME支持**:JavaMail 支持多部分MIME消息,允许用户发送包含文本、图像、音频、视频和其他类型附件的复杂邮件。 2. **SMTP协议**:JavaMail 使用简单邮件传输协议(SMTP)来发送...
JavaMail API是JavaMail库的核心部分,它提供了一系列的接口和类,用于创建、发送、接收和管理电子邮件。 JavaMail API详解.chm文件可能是一个帮助文档,详细介绍了如何使用JavaMail API进行邮件操作。它可能涵盖了...
- `javax.mail.Session` 表示与邮件服务器的会话,是 JavaMail 的核心类。开发者可以配置会话参数,如认证信息、邮件服务器地址等,以连接到邮件服务提供商。 4. **Transport 类**: - `javax.mail.Transport` ...
1. **Message类**:这是JavaMail中的核心类,代表一封电子邮件。它包含了邮件的所有属性,如发件人、收件人、主题和正文等。 2. **Session类**:这是JavaMail的上下文对象,负责配置邮件会话参数,如邮件服务器的...
2. **核心组件**:JavaMail的主要组件包括`javax.mail`和`javax.mail.internet`包,其中包含了处理邮件消息、附件、地址、会话等的核心类。 3. **Message类**:这是JavaMail的核心类,代表一封电子邮件。可以设置...
2. **mail.jar**:这个文件是JavaMail的核心库,它包含了所有与邮件处理相关的类和接口。JavaMail API 提供了一系列的类和接口,如`Session`、`Message`、`Address`、`Transport`等,它们用于创建、配置和管理邮件...
本篇文章将深入探讨JavaMail的核心概念、关键组件以及如何使用这两个特定的jar包——`jaf-1_1_1.zip`和`javamail1_4_7.zip`。 首先,让我们了解JavaMail的基本组件: 1. **JavaMail API**:这是JavaMail的核心部分...
在“javax.mail.jar”这个压缩包文件中,包含了 JavaMail API 的所有核心类和接口,开发者可以直接导入这个 JAR 文件到他们的项目中,以使用 JavaMail 提供的各种邮件服务功能。例如,`...
2. **核心组件**:JavaMail 主要由 `Session`、`Message`、`Store` 和 `Transport` 等组件构成。`Session` 是邮件会话,负责设置配置信息;`Message` 表示邮件实体;`Store` 用于连接邮件服务器并管理邮箱;`...
主要包括`javax.mail`和`javax.mail.internet`两个主要包,包含`Session`(会话)、`Message`(消息)、`Transport`(传输)等核心类。 2. **SMTP协议**: SMTP(Simple Mail Transfer Protocol)是用于在互联网上...
JavaMail API的核心概念包括以下几个部分: 1. **Message**: 这是邮件的基本单元,代表一封电子邮件。通过`Message`对象,我们可以设置邮件的标题、正文、附件、发件人、收件人等信息。 2. **Session**: 是邮件...
5. `send(MimeMessage message)`: 使用Session实例发送准备好的MimeMessage对象,MimeMessage是JavaMail API中的核心类,用于构建复杂的邮件结构。 为了实现以上功能,JavaMail API的关键类包括`Session`、`...
`javamail.jar` 文件是JavaMail的核心库,包含了所有必要的类和接口,使得开发者可以在他们的应用程序中集成邮件功能。 在JavaMail中,有几个关键的概念和组件: 1. **Session**: 这是JavaMail中的顶级对象,代表...