`
十井_
  • 浏览: 55972 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java邮件开发(2)_JavaMail API初识

阅读更多

本文包括两部分,一、JavaMail API讲解  二、编写一个JavaMail发送邮件的程序

一、JavaMail API的介绍
1.什么是Java Mail
a.可以直接采用Socket编程实现与邮件服务器的交互,不过需要处理诸于复杂的MIME格式内容的邮件等细节,非常麻烦。
b.JavaMail是SUN公司为方便开发人员实现邮件的接收和发送功能提供的一套标准开发包。它支持一些常用的协议:SMTP,POP3,IMAP。
c.JavaMail也提供了能够创建复杂MIME格式的邮件的相关API.

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

 

2.下载地址:点一下人家就可以下载啦

说明:JDK1.6以上(包括1.6)版本只要下载JavaMail包就行了,不然仍需要辅助JAF框架,处理邮件内容。

 

 

3.JavaMail的体系结构和API分类

a.JavaMail API按照功能可以分为3大类

创建和解析邮件内容的API:核心类Message,它的实例代表一封电子邮件

发送邮件的API:核心类Transport类,它的实例代表实现了某个邮件发送协议的邮件发送对象,如SMTP协议。

接收邮件的API:核心类Store,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,如POP协议。

 

b.Session类

用于定义整个应用程序所用的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息。如邮件服务器的主机名,端口号,采用的邮件接收和发送协议等。

 

详细可参考这篇文章中间的文字说明部分:JavaMail 深入浅出

 

 

 

4.JAF(JavaBeans Activation Framework)

下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jaf-1.1-fr-oth-JPR

a.JAF是一个专用的数据处理框架,它用于封装数据,并为应用程序提供访问和操作数据的接口。

b.JAF的主要作用在于让Java应用程序知道如何对一个数据源进行常看、编辑和打印等操作。对于通过JAF封装的数据,应用程序通过JAF接口能完成如下的功能

        访问数据源中的数据

        得知数据源的数据类型

        获知可对数据源的各种操作

        用户对数据进行某种操作时,自动创建进行该种操作所需的实例对象。

c.JavaMail API可以利用JAF从某种数据源中读取数据和货值数据的MIME类型,用这些数据生成MIME消息中的消息体和消息类型。


 

 

5.注意:mailapi.jar中的类分为java mail api和service provider,类似于JDBC API和数据库驱动一样,不需要provider包(smtp.jar、pop.jar等)编译没问题,但是运行会报错,需要导入provider包。

一般使用mail.jar不需要考虑上面的问题

 

 

二、编写一个JavaMail发送邮件的程序

 

新建工程JavaMail。

编码思路:先写主体框架,然后补充细节。

主要步骤:【类比:卫星(message)、火箭(transport)、火箭发送卫星(transport.send(message)】

1.创建邮件服务器的网络连接信息的Session对象

2.创建代表邮件内容的Message对象

3.创建Transport对象,连接服务器,发送Message对象,关闭连接。

 

 

 

package info.zoio.javamail;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Demo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Properties props = new Properties();
		//props.setProperty("mail.debug", "true");
		props.setProperty("mail.smtp.auth", "true");
		props.setProperty("mail.transport.protocol", "smtp");
		
		Session session = Session.getInstance(props);
		session.setDebug(true);//调试
		
		Message msg = new MimeMessage(session);
		Transport transport = null;

		try { 
			transport = session.getTransport();
			msg.setText("the message based on JavaMail API!");
			msg.setSubject("java mail api !");
			msg.setFrom(new InternetAddress("java_mail_test@126.com"));
			transport.connect("smtp.126.com", 25, "java_mail_test", "h123456");
			transport.sendMessage(msg,new Address[]{new InternetAddress("java_mail_test@yeah.net")});
		} catch (MessagingException e) { 
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				transport.close();
			} catch (MessagingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}
 

 

使用Authenticator类实现用户信息验证,代码如下:

package info.zoio.javamail;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Demo2 {
	public static void main(String[] args) {
		Properties props = new Properties();
		props.setProperty("mail.smtp.auth", "true");
		props.setProperty("mail.transport.protocol", "smtp");
		props.setProperty("mail.host", "smtp.126.com");
		//props.setProperty("mail.port", "25");
		
		Session session = Session.getInstance(props,
				new Authenticator() {	//策略模式
					protected PasswordAuthentication getPasswordAuthentication(){
						return new PasswordAuthentication("java_mail_test", "h123456");
					}
				});
		session.setDebug(true);
		
		Message msg = new MimeMessage(session);
		
		try {
			msg.setFrom(new InternetAddress("java_mail_test@126.com"));
			msg.setSubject("JavaMail API");
			msg.setRecipients(Message.RecipientType.TO, 
					InternetAddress.parse("java_mail_test@126.com,java_mail_test@yeah.net"));
			msg.setContent("<span style='color:red'>JavaMail开发测试</span>","text/html;charset=GBK");
			
			Transport.send(msg);
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
 

 

补充:邮件接受测试可参考这篇文章的代码:JavaMail:带附件的邮件格式解析

 

 

(完)

 

 

  • mail.jar (495.9 KB)
  • 描述: javamail
  • 下载次数: 0
分享到:
评论

相关推荐

    JavaMail邮件收发实例_JavaMail_API

    JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API

    05_传智播客张孝祥java邮件开发_JavaMail.API的介绍.rar

    JavaMail API是Java编程语言中用于处理电子邮件的接口和类集合,它允许开发者发送、接收、存储和管理电子邮件。在JavaMail API的介绍中,我们将会深入探讨如何使用这个强大的工具来实现邮件功能。 首先,JavaMail ...

    FAQ.zip_javamail api_zip

    JavaMail API 是一个广泛使用的Java库,用于处理电子邮件通信。这个API提供了丰富的功能,包括创建、发送、接收邮件,以及管理邮箱。在“FAQ.zip_javamail api_zip”中,我们很可能找到了关于使用JavaMail API的常见...

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

    JavaMail API是Java平台上用于处理电子邮件的标准库,它允许开发者创建和管理邮件系统中的邮件,包括发送、接收、读取和处理电子邮件。本项目“用Java实现E-mail客户端”就是一个基于JavaMail API的简单示例,旨在...

    java_mail.rar_ javamail_java mail_java 下载_javamail-1.4.1_javamai

    它提供了丰富的 API,使得开发者可以在 Java 应用程序中方便地访问邮件服务器。标题中的 "javamail-1.4.1" 和 "javamail-1.4.2" 提到了两个特定的版本号,这表明提供的资源可能是这两个版本的 JavaMail 库。 在描述...

    java_web开发技术08_javamail

    JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,允许开发者发送、接收、存储和管理邮件。在Java Web开发中,JavaMail是一个不可或缺的工具,尤其是在构建需要发送确认邮件、通知或者报告的...

    (java_mail_web.rar_java mail_java web_java web mail _javamail we

    1. **JavaMail API**:JavaMail API是Java平台上的标准邮件接口,提供了处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务的类库。使用JavaMail,开发者可以方便地创建、发送...

    bbx_data.rar_java mail_javamail_mail_实用 java

    在Java应用程序中,JavaMail API 提供了丰富的功能,使得开发者可以方便地实现邮件的创建、读取、发送和管理。本教程将深入探讨JavaMail的核心概念、关键类以及如何在实际项目中运用。 1. **JavaMail API 概述** ...

    JavaMail_API,JavaMail_API简介,JavaMail

    JavaMail API 1.2 是最新的版本,而 1.1.3 版本则包含在 Java 2 企业版 (J2EE) 平台 1.2 中。 综上所述,JavaMail API 为开发者提供了一个强大的工具箱,不仅能够轻松处理邮件的发送和接收,还能支持多种邮件协议。...

    javaMail20090818151851.rar_java 收发邮件_javamail

    JavaMail API 提供了一组接口和类,使得开发者可以在 Java 应用程序中轻松地访问邮件服务器。它遵循 JavaBeans Activation Framework (JAF) 规范,支持 SMTP、POP3 和 IMAP 协议,用于发送和接收邮件。 2. **关键...

    hyl.rar_javamail_javamail jsp_mail

    JavaMail 是一个强大的开源库,专门用于处理电子邮件的发送和接收。它提供了丰富的API,使得开发者可以在Java...通过深入研究这个例子,开发者可以更好地理解JavaMail API的使用,并将其应用于实际的web开发项目中。

    java邮件开发_Java邮件开发源代码

    本文将深入探讨Java邮件开发的相关知识点,包括JavaMail API的基本概念、核心组件、配置过程以及源代码分析。 JavaMail API是Java平台上的一个标准API,它允许开发者通过编程方式发送和接收电子邮件。这个API包含了...

    Java邮件开发Fundamentals of the JavaMail API

    2. Introducing the JavaMail API 3 3. Reviewing related protocols 4 4. Installing JavaMail 6 5. Reviewing the core classes 8 6. Using the JavaMail API 13 7. Searching with SearchTerm 21 8. ...

    传智播客张孝祥java邮件开发_Java邮件开发源代码.rar

    总的来说,"传智播客张孝祥java邮件开发_Java邮件开发源代码"涵盖了JavaMail API的基本用法和高级特性,是学习和提升Java邮件开发技能的一个宝贵资源。通过研究这些源代码,开发者不仅可以了解如何发送邮件,还能...

    JavaMail API 1.4.7 官网下载 最新版

    JavaMail API 1.4.7 是一个广泛使用的开源库,专为Java开发者设计,用于处理电子邮件相关的任务。这个版本的API提供了丰富的功能,包括发送、接收邮件,管理邮箱,处理附件,以及支持多种邮件协议如SMTP(简单邮件...

    JavaMail+JAF+JavaMail_API+JavaMail_API详解

    对于想要在Java环境中开发邮件功能的开发者来说,这是一个非常全面的工具包。通过学习和使用这些资源,开发者可以熟练掌握如何使用JavaMail和JAF来实现复杂的邮件操作,例如发送带附件的邮件、处理邮件事件、读取...

    JavaMail(JAVA邮件服务器)API详解 chm.rar

    JavaMail是Java编程环境中用于处理电子邮件的一套API,它提供了丰富的功能,允许开发者发送、接收、存储和管理邮件。在JavaMail API详解的资源中,我们可以深入理解这一强大的工具。 首先,JavaMail API简介部分会...

    JavaMail(JAVA邮件服务) API详解

    JavaMail API是Java平台上用于处理电子邮件的一套强大的库,它为开发者提供了丰富的功能,使得在应用程序中发送和接收邮件变得简单。本文将深入探讨JavaMail API的各个方面,帮助你理解和掌握这一关键工具。 首先,...

    javaMail API 跟 javaMail.jar包

    JavaMail API是Java平台上用于处理电子邮件的一套标准API,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是...

Global site tag (gtag.js) - Google Analytics