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("发送失败");
}
}
}
分享到:
相关推荐
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...
Java API文档是Java开发者的重要参考资料,它包含了Java开发工具包(JDK)中的所有类、接口、方法和常量的详细说明。这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,...
java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java电商源代码java...
java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作工具类 java sql操作工具类java sql操作...
java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点导航系统java景点...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...
Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...
HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 ...
标题"smali2java——直接将smali转换成java"揭示了本文的核心主题,即一个名为"smali2java"的工具,它的主要功能是将编程语言Smali转换为Java。Smali是一种低级的、汇编式的语言,通常用于Android应用的逆向工程,而...