`
echo715
  • 浏览: 12889 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
这几天在学习javamail,找的点资料
一、基础
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协议支持的,如查看几封新邮件消息这个功能,这些功能内建在如 Eudora或MicrosoftOutlook之类的程序中,它们记住一些事.所以在用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了.

二、简单运用

1,获取系统Properties.

Properties props = System.getProperties();

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 ” );

9发送消息.

Transport.send(message);

10,在编译用运的时候传递MSTP服务器,from地址,to地址.
三、具体的接口或类的含义
Session类定义了一个基本的邮件会话,所有的其他类都是由这个session 才得意生效的,Session对象用java.util.Properties对象获取信息,如邮件服务器,用户名,密码及整个应用程序中共享的其他信息.类的构造器是此有的,private.它能用getDefaultInstance()方法来共享.获取Session对象的方方法如下:

Properties props = new Properties();

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

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

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

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

MimeMessage message = newMimeMessage(session);

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

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

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

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

message.setSubject( “ 主题 ” );

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

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

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

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

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

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

Address[] address = ,.,. ;    message.addFrom(address);

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

message.addRecipient(type,address)

    Authenticator与java.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);

    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();

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

    Store和folder用session获取消息,与发送消息开始很相似,但是在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());

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

folder.colse(boolean);

store.colse();

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

四、资料整理来源
1、以上内容来自:http://www.blogjava.net/action/archive/2006/04/24/42794.html
2、异常处理,参考:http://www.myexception.cn/java%20exception/707_2.html
    http://www.blogjava.net/TrampEagle/archive/2006/05/26/48326.html
3、实例:网上有很多
4、Java发送邮件之Apache Commons Email Apache Commons Email
   http://www.163jsp.com/main/helpcontent.jsp?id=f9b452461f696b29011f6e6ff00b029b
分享到:
评论

相关推荐

    java mail 1.4.5 jar_source 天涯浪子

    Java Mail 是一个开源的 Java API,它允许开发者在 Java 应用程序中处理电子邮件。这个“java mail 1.4.5 jar_source 天涯浪子”资源包含了 Java Mail 1.4.5 版本的 JAR 包、源代码和相关的文档,以及其依赖的 ...

    Java_Mail.zip_java_java mail_java.mail_mail

    Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库提供了全面的API,使得开发者能够方便地实现SMTP...通过深入学习和实践,你可以掌握Java Mail的使用技巧,为你的项目添加强大的邮件处理能力。

    Java Mail 发布邮件

    Java Mail 是一个强大的开源库,用于在Java应用程序中处理电子邮件通信。它提供了API,使得开发者可以方便地发送、接收和管理邮件。这个压缩包文件很可能包含了一组示例代码或工具,帮助我们理解如何使用Java Mail ...

    java_mail 1.5.zip

    总之,这个“java_mail 1.5.zip”压缩包对于Java开发者来说是一份宝贵的资源,通过学习源代码,不仅可以掌握如何使用JavaMail API发送邮件,还能深入了解邮件处理背后的机制,提高邮件应用的开发能力。

    java mail课本源代码java web

    Java Mail 是一个强大的Java库,...通过学习和研究这些源代码,开发者可以深入理解Java Mail的工作原理,并在实际项目中灵活运用。对于Java Web开发者来说,掌握Java Mail API是提升工作效率和系统功能的关键技能之一。

    Java Mail实例

    Java Mail邮件开发实例,不过大家注意了,这不是大的项目,是一个小例子,作为初学者的最好资料。...里面资料包括Java Mail学习笔记和现成的例子,以及Java Mail开发所需要的Jar包都有了,上手容易。

    java mail 1.4 源码

    Java Mail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。Java Mail 1.4 源码的分析和理解有助于我们深入探究其内部工作原理,优化邮件处理效率,并能根据需求进行定制化...

    java Mail的Demo

    通过理解Java Mail的基本概念、工作原理,以及通过示例代码学习如何发送邮件,开发者可以将邮件功能集成到各种Java应用程序中,提升其功能性和用户体验。在实际开发中,根据项目需求对Java Mail API进行适当的扩展和...

    java mail邮箱发送案例

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者在Java应用程序中发送和接收邮件。在Java Mail API的帮助下,你可以实现各种复杂的邮件功能,比如添加附件、设置HTML内容、发送带有图片的邮件等。本案例将...

    java mail api下载

    3. **帮助文档**:可能包括API文档(如Javadoc),提供了关于接口、类和方法的详细说明,对学习和使用Java Mail API非常有帮助。此外,还可能包含用户指南、教程和其他资源,帮助开发者解决在使用过程中遇到的问题。...

    (java_mail_web.rar_java mail_java web_java web mail _javamail we

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者在Java应用程序中收发邮件。Java Web Mail 是基于Java...开发者可以通过阅读这些文件来学习和理解如何在Java Web环境中集成和使用Java Mail API实现邮件服务。

    Java Mail的使用

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者在Java应用程序中发送和接收邮件。这个API遵循JSR 54规范,提供了丰富的功能,包括SMTP、POP3、IMAP协议的支持,以及MIME消息的处理。在Java Mail中,我们...

    java mail发送 源码

    在这个压缩包中,包含了一个使用Java Mail API发送邮件的源码示例,这对于学习和集成到项目中非常有用。 Java Mail API 包含多个组件,主要由以下部分组成: 1. javax.mail:核心API,提供了邮件会话、存储和消息...

    Java_web_mail.rar_Web Java mail_java mail查询_java webmail

    Java Web Mail是一个基于Java技术构建的实用电子邮局系统,主要利用了JavaMail API来处理邮件的发送、接收和管理。这个系统展示了如何在Web应用中集成电子邮件功能,为用户提供了一个方便的界面来访问和管理他们的...

    Java Mail 开发组件 jar包

    Java Mail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。这个组件使得开发者能够方便地执行发送...通过深入学习和掌握Java Mail API,开发者可以构建功能丰富的邮件系统,满足各种复杂的邮件处理需求。

    第九 Java Mail 编程PPT学习教案.pptx

    学习Java Mail编程能够使开发者具备创建高效、可靠的邮件应用程序的能力,无论是简单的文本邮件还是复杂的多媒体邮件,都能轻松处理。对于J2EE开发者来说,理解Java Mail API并能熟练运用,是构建企业级应用不可或缺...

    Java Mail POP3 Client.zip

    Java Mail POP3 Client是一个用于实现电子邮件收发功能的Java应用程序,它基于JavaMail API和POP3(Post Office Protocol version 3)协议。POP3是一种广泛使用的邮件存储和检索协议,适用于下载邮件到本地客户端...

    java mail 收发邮件Demo源码

    总之,这个"java mail 收发邮件Demo源码"涵盖了Java Mail API的核心功能,是学习和实践邮件处理的一个宝贵资源。通过深入理解和实践,开发者可以熟练掌握如何利用Java进行邮件的收发操作,包括处理附件和解决编码...

    java mail 发送邮件

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。在Java应用程序中,我们通常使用JavaMail API...通过学习和实践这些示例,你将能够熟练地使用Java Mail API进行邮件操作。

    用Java实现E-mail客户端.rar_java E-ma_java mail_java mail api_javamail_

    这个项目不仅是一个学习资源,也是一个基础的模板,可以帮助开发者快速搭建自己的E-mail应用。理解并掌握JavaMail API的使用,能让你在处理与电子邮件相关的任务时游刃有余,无论是简单的发送通知还是构建复杂的邮件...

Global site tag (gtag.js) - Google Analytics