邮件开发入门

      首先在官网下载相应的java-mail.jar包。

      在系统的配置文件中配置CLASSPATH,地址指向java-maril.jar。


javaMail API的分类和体系结构

       1.创建和解析邮件内容的AIP

       2.发送邮件AIP

       3.接收邮件AIP

关键的几个类:

       1.Message,该类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。客户端程序邮件时,首先使用创建邮件的javaMail API创建出封装了邮件数据的Message对象,然后把这个对象传递给邮件发送API发送。客户端程序接收邮件时,邮件接收API把接收到的邮件数据封装在Message类的实例对象中,客户端程序再使用邮件解析API从这个对象中解析出接收到的邮件数据。

         2.Transport,该类是发送邮件的核心API类,它的实例对象代表实现了一个邮件发送协议的邮件发送对象,例如SMTP协议。客户端程序创建好Message对象后,只需要使用邮件发送API得到Transport对象,然后把Message对象传递给Transport对象,并调用它的发送方法,就可以把邮件发送给指定的SMTP服务器。

         3.Store:该类是接收邮件的核心API类,它的实例代表实现了一个邮件接收协议的邮件接收对象,例如POP3协议。客户端程序接收邮件时,只需要使用邮件接收API得到Store对象的接收方法,就可以从指定的POP3服务器获得邮件数据,并把这些邮件数据封装到表示邮件的Message对象中。

            4.Session:该类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器的主机名,端口号,采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。

JAF(Java Bean Actication Framework, Java Bean激活框架)

         该框架是专用的数据处框架,它用于专封装数据,并为应用程序提供访问和操作数据接口。JavaMail API可以利用JAF从一个数据源中读取数据和获知数据的MIME类型,并用这些数据生成MIME消息中的消息体和消息类型。

        JAF的主要作用在于让JAVA应用程序知道如何对一个数据源进行查看,编辑和打印等操作。大家知道,在MS Word程序中可以打开一谝Word文档中嵌Visio图片,JAF就是要让Java程序能够完成类似的技术应用,让应用程序知道数据源支持哪些操作,每个操作分别调用哪个处理模块。对于通过JAF封装的数据,应用程序通过JAF提供的接口可以完成如下功能:

        1,访问数据源中的数据。

        2,获知数据源的数据类型。

        3,获知可对数据进行的各种操作。

        4,用户对数据执行操作时,自动创建执行该操作的软件部件的实例对象。

         例如,如果使用JAF处理一个图片文件,那么应用程序通过JAF提供的接口就可以得到对图片文件进行操作的输入输出流,图片文件的MIME类型,JAF为图片文件提供的操作方法(如查看,编辑或打印图片等等),应用程序调用这些操作时,JAF就会调用相应的处理模块对数据进行处理。

        使用JAF需要下载activation.jar包。可从SUN公司官网下载。

 

创建邮件内容

          JavaMail API使用javax.mail.Message类来表示一封邮件Message类是一个抽象类,应用程序需要使用其实现子类javax.mail.internet.MimeMessage来创建Message类的实例对象。如果要创建一封只包含文本内容的简单邮件,那么只需要使用到MimeMessage类就可以了。但如果要创建一封包含内内嵌资源或多个附件的复杂邮件,那么则需要同时使用到JavaMail API中的MimeMessage,javax.mail.internet.MimeBodyPart和java.mail.internet.MimeMultipart等类。
        1.MimeMessage类表示整封邮件。

        2.MimeBodyPart类表示邮件的一个MIME消息。

        3.MimeMultipart类表示一个由多个MIME消息组合成的MIME消息。

 

规则:

        1.复杂邮件和简单邮件一样,都是使用MimeMessage对象来表示整封邮件的。

        2.对于复杂邮件和邮件体,不能再简单地调用MimeMessage.setText方法生成,而是要用一个MimeMultipart对象表示,并通过MimeMessage.setContent(Multipart mp)方法设置到MimeMessage对象中。

        3.MimeMultipart对象用来组合多个MIME消息,其中每个MIME消息分别用一个MimeBodyPart对象来表示,并通过MimeMultipart.addBodyPart(BodyPart part)方法加入到MimeMultipart对象中。

        4.如果MimeBodyPart对象表示的MIME消息又是一个MIME组合消息,那么它的内容又需要使用一个MimeMultipart对象来表示,并通过MimeBodyPart.setContent(Multipart mp)方法设置到MimeBodyPart对象中。与代表整封邮件的MimeMultipart对象一样,这个MimeMultipart对象中的每一个组成单元也分别由一个MimeBodyPart对象表示。

 

简单纯文件邮件发送例子:

          该例子只是发送到本地的邮件例子!

 

package com.yyc.mail;

import java.io.FileOutputStream;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class TestMessage {

	public static void main(String args[]){
		String from = "doodiv@sina.com";
		String to = "doodiv@sina.com";
		String subject = "test";
		String body = "test!!!";
		//创建Session实例对象
		Session session = Session.getDefaultInstance(new Properties());
		//创建MimeMessage实例对象
		MimeMessage msg = new MimeMessage(session);
		try {
			//设置发件人地址
			msg.setFrom(new InternetAddress(from));
			//设置收件人地址
			msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
			//设置发送日期 
			msg.setSentDate(new Date());
			//设置邮件主题
			msg.setSubject(subject);
			//设置纯文本内容的邮件正文
			msg.setText(body);
			//保存并生成最终的邮件内容
			msg.saveChanges();
			msg.writeTo(new FileOutputStream("c:\\test.eml"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		
	}
	
	
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值