`
yiwenqi2011
  • 浏览: 4255 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

java

阅读更多
JavaMail

登录到:http://java.sun.com/products/javamail/downloads/index.html站点下载JavaMail的版本目前最新的是JavaMail 1.4.4

下载后解压使用其中的mail.jar包,该文件是JavaMail的全功能JAR包。

JavaMail还依赖于另外一个组件:JAF(JavaBeans Activation franmework) 还需要下载该包http://java.sun.com/products/jaf/downlowads/index.html,下载后使用Activation.jar包。该文件就是JAF组件的二进制包,将该包JAR添加到项目的类加载路径即可。

JavaMail的常用API

(1)javax.mail.Session

Session类代表JavaMail的一次邮件会话:

=》Session.getDefaultInstance(Properties props)

=》Session.getDefaultInstance(Properties props,Authenticator a)

(2)java.mail.Transport  使用Transoprt完成邮件的发送

Transport.send(MimeMessage msg)

Transport有一个直接子类:com.sun.mail.smtp.SMTPTransport,实现了Transport这个抽象类

(3)javax.mail.Store

该类是实现邮件协读/写/监视/查找等操作

Store store = session.getStore(java.lang.String protocol);

store.connect(popserver,username,passwrod);

(4)javax.mail.Folder

Folder用于分级组织邮件,代表邮件系统的一个文件夹

Folder fo = store.getFolder("INBOX");

fo.open(Folder.READ_ONLY);

(5)Java.mail.MimeMessage

该对象是实际电子邮件对象

该类的含有一下属性:

protected byte[] content:该邮件内容的字节数组

protected InternetHeaders header:返回保存该E-mail文件头的对象

方法:

void addFrom(Address[] addresses):为该E-mail设置发件人地址

void addHeader(String name,String value):在E-mail 的文件头内容上增加value;

void addRecipients(Message.RecipientType type Address[] address);指定类型的收件地址

Address[]  getFrom();返回发件人地址列表

void setContent(Multipart mp):为该E-mail设置内容

(6)javax.mail.Address

该对象用于确定发件人和收件人的地址,和message一样

(7)javax.mail.Multipart

是用于保存电子邮件内容的容器,它定义了增加和删除/获得电子邮件的方法。

(8)javax.mail.BodyPart

该类表示邮件内容的一个部分。它是一个抽象类,通常使用其子类:javax.mail.Internet.MimeBodyPart.

(9)javax.activation.DataHandler

该类允许邮件信息包含非文本的BodyPart对象。

(10)java.activation.FileDataSource

该类代表本地文件和服务器可以直接访问的资源。

(11)

该类代表一个远程资源。其他类似与FileDataSource。但实际上不如FileDataSource的常用





package email;



import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;



public class SendMail {



// 收件人地址

private String sendTo;

// 发送人地址

private String sendFrom;

// SMTP服务

private String smtpServer;

// 登录SMTP用户

private String userName;

//密码

private String pwd;

//邮件主题

private String subject;

//邮件内容

private String content;

//附件

List<String> attachments = new ArrayList<String>();

public String getSendTo() {

return sendTo;

}

public void setSendTo(String sendTo) {

this.sendTo = sendTo;

}

public String getSendFrom() {

return sendFrom;

}

public void setSendFrom(String sendFrom) {

this.sendFrom = sendFrom;

}

public String getSmtpServer() {

return smtpServer;

}

public void setSmtpServer(String smtpServer) {

this.smtpServer = smtpServer;

}

public String getUserName() {

return userName;

}

public void setUsername(String userName) {

this.userName = userName;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public SendMail(String sendTo, String sendFrom, String smtpServer,

String userName, String pwd, String subject, String content,

List<String> attachments) {

this.sendTo = sendTo;

this.sendFrom = sendFrom;

this.smtpServer = smtpServer;

this.userName = userName;

this.pwd = pwd;

this.subject = subject;

this.content = content;

this.attachments = attachments;

}



public SendMail() {

}

/**

* 转换中文格式

* @param strText

* @return

*/

public String transferChinese(String strText){

try {

strText=MimeUtility.encodeText(new String(strText.getBytes(),"UTF-8"),"UTF-8","B");

} catch (Exception e) {

// TODO: handle exception

}

return strText;

}

public void attachfile(String name){

attachments.add(name);

}

//发送邮件

public boolean send(){

//创建邮件Session所需要的properties

Properties prop=new Properties();

prop.put("mail.smtp.host", smtpServer);

prop.put("mail.smtp.auth", "true");

//以匿名内部类的形式创建登录服务器的认证对象

Session sess = Session.getDefaultInstance(prop,

new Authenticator()

{

public PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(userName, pwd);

}

});


//构造MimeMessage崩设置相关属性

MimeMessage mmsg = new MimeMessage(sess);


try {

//设置发送人

mmsg.setFrom(new InternetAddress(sendFrom));

//设置收信人

InternetAddress[] addresses = {new InternetAddress(sendTo)};

mmsg.setRecipients(Message.RecipientType.TO, addresses);

//设置主题

subject = transferChinese(subject);

mmsg.setSubject(subject);

//构造Multipart

Multipart mp = new MimeMultipart();

//向Multipart添加正文

MimeBodyPart mbpContent = new MimeBodyPart();

mbpContent.setText(content);

//将BodyPart添加到Multipart中

mp.addBodyPart(mbpContent);


//向Multipart中添加附件

//遍历集合

for (String efile : attachments) {

MimeBodyPart mbp = new MimeBodyPart();

//以文件创建FileDataSource对象

FileDataSource fds=new FileDataSource(efile);

mbp.setDataHandler(new DataHandler(fds));

mbp.setFileName(fds.getName());

mp.addBodyPart(mbp);

}

attachments.clear();//清空附件表

mmsg.setContent(mp);

mmsg.setSentDate(new Date());//设置发送日期

Transport.send(mmsg);


} catch (AddressException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

} catch (MessagingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

return true;

}


public static void main(String[] args) {

SendMail mail = new SendMail();

mail.setSmtpServer("smtp.sina.com");

mail.setUsername("spring_test");

mail.setPwd("123abc");

//收件人

mail.setSendTo("1976001007@qq.com");

mail.setSendFrom("spring_test@sina.com");

mail.setSubject("测试邮件");

mail.setContent("这是一个测试邮件,请勿回信,谢谢");

mail.attachments.add("src/email/SendMail.java");

mail.attachments.add("src/email/Test.java");

System.out.println("正在发送。。。。。");

if(mail.send()){

System.out.println("~~~发送成功~~~");

}else {

System.out.println("发送失败");

}


}

}
分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    Java 面经手册·小傅哥.pdf

    这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包2

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java源码包4

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java源码包3

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java api最新7.0

    JAVA开发人员最新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 API !Java 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列...

    java开源包11

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包4

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包6

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包9

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包5

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包8

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包10

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    Java开发技术大全(500个源代码).

    HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...

    java开源包1

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包3

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    Java 中文入门学习手册合集[chm版]

    第一章 Java语言的产生及其特点 第二章 Java程序开发与运行环境 第三章 Java程序设计基础 第四章 Java应用程序的基本框架 第五章 Java的类 第六章 Java图形用户接口 第七章 多线程 第八章 Java的"异常" 第九...

Global site tag (gtag.js) - Google Analytics