javaEmail

来源:互联网 发布:数据信息知识的关系 编辑:程序博客网 时间:2024/05/19 20:44

                          JavaMail 课件

 

重要类的作用

SMTP,POP,IMAP, TCP/IP 协议;

 

1. 网络上发邮件过程:

    当我们发送电子邮件时,这封邮件是由邮件发送服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。

 

2. 电子邮件地址的构成

    电子邮件地址的格式由三部分组成。第一部分“USER”代表用户信箱的帐号,对于同一个邮件接收服务器来说,这个帐号必须是唯一的;第二部分“@”是分隔符;第三部分是用户信箱的邮件接收服务器域名,用以标志其所在的位置。

 

3. 邮件的重点协议

TCP/IP 协议:传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件

    POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件

    POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC机或 MAC。一旦邮件发送到 PC机或 MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。

   IMAP4(Internet Message Access Protocol4) 即 交互式数据消息访问协议第四个版本

IMAP4协议与POP3协议一样也是规定个人计算机如何访问互联网上的邮件服务器进行收发邮件的协议,但是IMAP4协议同POP3协议相比更高级。IMAP4协议支持客户机在线或者离线访问并阅读服务器上的邮件,还能交互式的操作服务器上的邮件。IMAP4协议更人性化的地方是不需要像POP3协议那样把邮件下载到本地,用户可以通过客户端直接对服务器上的邮件进行操作(这里的操作是指:在线阅读邮件在线查看邮件主题 大小 发件地址等信息)。用户还可以在服务器上维护自己邮件目录(维护是指移动 新建 删除 重命名共享 抓取文本 等操作)。IMAP4协议弥补了POP3协议的很多缺陷,,由RFC3501定义。本协议是用于客户机远程访问服务器上电子邮件,它是邮件传输协议新的标准。

 

 

在java 中如何开发mail

开发javamail 所需jar包: Javamail.jar 和Activation.jar

 

JavaMail 中的核心类

Session :Session 类定义了一个基本邮件会话(session),是java Mail API最高层入口类。所有其它类都是经由这个session 才得以生效。Session 对象用 Java.util.Properties 对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享的其它信息。

Message:当我们建立了Session对象后,便可以被发送的构造信息体了。在这里SUN提供了Message类型来帮助开发 者完成这项工作。由于Message是一个抽象类,大多数情况下,我们使用javax.mail.internet.MimeMessage这个子 类,MimeMessage 是个能理解 MIME 类型和头的电子邮件消息,该类是使用MIME类型、MIME信息头的邮箱信息。信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为 ASCII的方式使用。

  Address:一旦您创建了 Session 和 Message,并将内容填入消息后,就可以用 Address 确定信件地址了。和 Message 一样,Address 也是个抽象类。您用的是Javax.mail.internet.InternetAddress邮件地址类,像Message一样,Address类也是一个抽象类,所以我们将使用javax.mail.internet.InternetAddress这个子类。

 Authenticator: 像java.net类那样,JavaMail API通过使用授权者类(Authenticator)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指邮件服务器。在javax.mail包中可以找到这个JavaMail的授权者类(Authenticator)。

在使用Authenticator这个抽象类时,我们必须采用继承该抽象类的方式,并且该继承类必须具有返回PassWordAuthentication对象(用于存储认证时要用到的用户名、密码)getPasswordAuthentication()方法。并且要在Session中进行注册,使Session能够了解在认证时该使用哪个类。

 Transport: 消息发送的最后一部分是使用 Transport 类。

在发送信息时,Transport类将被用到。这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send()来发送消息:

Transport.send(message);

当然,方法是多样的。我们也可由Session获得相应协议对应的Transport实例。并通过传递用户名、密码、邮件服务器主机名等参数建立与邮件服务器的连接,并使用sendMessage()方法将信息发送,最后关闭连接;

  Store 类:tore类实现特定邮件协议上的读、写、监视、查找等操作。通过Javax.mail.Store类可以访问Javax.mail.Folder类。

  Folder类:用于分级组织邮件,并提供照Javax.mail.Message格式访问email的能力.

 

 

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  邮件服务器是否要验证

 

 

 

 

 

 

 

 


原创粉丝点击