- 浏览: 216204 次
- 性别:
- 来自: 北京
文章分类
实例
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class SendEmail {
//日志
private static Logger logger = Logger.getLogger(SendEmail.class);
//使用组合的方式,将用到的类私有化成成员变量
private MimeMessage mimeMsg; // MIME邮件对象
private Session session; // 邮件会话对象,该对象的目的是为了通过Properties获取发送邮件的地址,然后创建MimeMessage对象
private Properties props; // 系统属性,目的是向里面存放mail.smtp.host值,
private String username; // smtp认证用户名和密码
private String password;
private Multipart mp;//附件相关的
//私有化构造函数
private SendEmail(){}
//指定构造函数必须依靠SendEmail成员变量值
private SendEmail(TYPE field){
//初始化props,session,mimeMsg
initProps(field);
initSession();
initMimeMsg();
}
//初始化props
private boolean initProps(TYPE field){
props = System.getProperties();
props.setProperty("mail.smtp.host", field.getValue());//设置服务器host
props.setProperty("mail.smtp.connectiontimeout","10000");
return true;
}
//初始化session
private boolean initSession(){
session = Session.getDefaultInstance(props);
return true;
}
//初始化mimeMsg
private boolean initMimeMsg(){
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
return true;
}
//设置主题
public boolean setMailTheme(String mailTheme){
try {
mimeMsg.setSubject(mailTheme);
} catch (MessagingException e) {
logger.info("添加邮件主题失败");
return false;
}
return true;
}
//设置内容
public boolean setMailBody(String mailBody){
BodyPart bp = new MimeBodyPart();//被包含到MimeMultipart对象中
try{
bp.setContent(mailBody,"text/html;charset=GB2312");//bodyPart用于封装正文内容
mp.addBodyPart(bp);//mp是添加正文类和附件类的
}catch(Exception e){
logger.info("添加邮件正文出现异常",e);
return false;
}
return true;
}
//添加附件
public boolean setAffix(String affixFileName){
BodyPart bp = new MimeBodyPart();//BodyPart是用于封装邮件正文和附件的类,最后需要添加到Multipart类中
//添加附件需要使用DataHandler
try {
FileDataSource fileDataSource = new FileDataSource(affixFileName);
bp.setDataHandler(new DataHandler(fileDataSource));
mp.addBodyPart(bp);
} catch (MessagingException e) {
logger.info("添加附件失败",e);
return false;
}
return true;
}
//添加写信人
public boolean setFrom(String user){
try {
mimeMsg.setFrom(new InternetAddress(user));
} catch (Exception e){
logger.info("添加发信人失败",e);
return false;
}
return true;
}
/**
* 添加接收人
* @desc receivers 多个接收者要以,号分隔
*/
public boolean setReceivers(String receivers){
try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(receivers));
} catch (Exception e) {
logger.info("添加接受人失败",e);
return false;
}
return true;
}
/**
* 添加抄送人
* @param copyers 多个抄送人要以逗号分隔
* @return 是否添加成功
*/
public boolean setCarBonCopy(String copyers){
try {
mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress
.parse(copyers));
} catch (Exception e) {
logger.info("添加抄送人出现异常",e);
return false;
}
return true;
}
/**
* 是否需要验证
* @param need
*/
public void setNeedAuth(final boolean need) {
if (need) {
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
}
/**
* 发出
* @return 是否发送成功
*/
public boolean sendOut(String userName,String password){
try {
mimeMsg.setContent(mp);//添加附件和正文
mimeMsg.saveChanges();//更新邮件的同步信息以和内容保持同步
Session session = Session.getDefaultInstance(props,null);
Transport transport = session.getTransport("smtp");
//参数1服务器的类型值,参数2用户名,参数3密码
transport.connect(props.getProperty("mail.smtp.host"),userName,password);
//添加邮件类以及地址发出邮件
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
transport.close();
} catch (Exception e) {
logger.info("邮件发送失败",e);
return false;
}
return true;
}
/**
* 用户调用的发送邮件方法
* @param mailTheme 邮件主题
* @param mailBody 邮件内容
* @param mulitpart 附件
* @param users 发送人
* @param recevers 接收人,多个接收人要以逗号分隔
* @param copyers 抄送人,多个接收人要以逗号分隔
* @return 是否发送成功
* @desc 因为只有在服务器挂了等特殊情况下才需要,所以每次在静态方法中
*/
public static boolean sendEmail(String mailTheme,String mailBody,String affixFileName,String users,String recevers,String copyers,String userName,String password){
boolean flag = false;
SendEmail email = new SendEmail(TYPE.SMTP_TNICE);
email.setNeedAuth(false);
email.setMailTheme(mailTheme);//添加标题
email.setMailBody(mailBody);//添加内容
email.setAffix(affixFileName);
email.setFrom(users);
email.setReceivers(recevers);
email.setCarBonCopy(copyers);
flag = email.sendOut(userName, password);
if(flag){
logger.info("邮件发送成功");
return true;
}else{
logger.info("邮件发送失败");
return false;
}
}
public void setMimeMsg(MimeMessage mimeMsg) {
this.mimeMsg = mimeMsg;
}
public void setSession(Session session) {
this.session = session;
}
public void setProps(Properties props) {
this.props = props;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setMp(Multipart mp) {
this.mp = mp;
}
}
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class SendEmail {
//日志
private static Logger logger = Logger.getLogger(SendEmail.class);
//使用组合的方式,将用到的类私有化成成员变量
private MimeMessage mimeMsg; // MIME邮件对象
private Session session; // 邮件会话对象,该对象的目的是为了通过Properties获取发送邮件的地址,然后创建MimeMessage对象
private Properties props; // 系统属性,目的是向里面存放mail.smtp.host值,
private String username; // smtp认证用户名和密码
private String password;
private Multipart mp;//附件相关的
//私有化构造函数
private SendEmail(){}
//指定构造函数必须依靠SendEmail成员变量值
private SendEmail(TYPE field){
//初始化props,session,mimeMsg
initProps(field);
initSession();
initMimeMsg();
}
//初始化props
private boolean initProps(TYPE field){
props = System.getProperties();
props.setProperty("mail.smtp.host", field.getValue());//设置服务器host
props.setProperty("mail.smtp.connectiontimeout","10000");
return true;
}
//初始化session
private boolean initSession(){
session = Session.getDefaultInstance(props);
return true;
}
//初始化mimeMsg
private boolean initMimeMsg(){
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
return true;
}
//设置主题
public boolean setMailTheme(String mailTheme){
try {
mimeMsg.setSubject(mailTheme);
} catch (MessagingException e) {
logger.info("添加邮件主题失败");
return false;
}
return true;
}
//设置内容
public boolean setMailBody(String mailBody){
BodyPart bp = new MimeBodyPart();//被包含到MimeMultipart对象中
try{
bp.setContent(mailBody,"text/html;charset=GB2312");//bodyPart用于封装正文内容
mp.addBodyPart(bp);//mp是添加正文类和附件类的
}catch(Exception e){
logger.info("添加邮件正文出现异常",e);
return false;
}
return true;
}
//添加附件
public boolean setAffix(String affixFileName){
BodyPart bp = new MimeBodyPart();//BodyPart是用于封装邮件正文和附件的类,最后需要添加到Multipart类中
//添加附件需要使用DataHandler
try {
FileDataSource fileDataSource = new FileDataSource(affixFileName);
bp.setDataHandler(new DataHandler(fileDataSource));
mp.addBodyPart(bp);
} catch (MessagingException e) {
logger.info("添加附件失败",e);
return false;
}
return true;
}
//添加写信人
public boolean setFrom(String user){
try {
mimeMsg.setFrom(new InternetAddress(user));
} catch (Exception e){
logger.info("添加发信人失败",e);
return false;
}
return true;
}
/**
* 添加接收人
* @desc receivers 多个接收者要以,号分隔
*/
public boolean setReceivers(String receivers){
try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(receivers));
} catch (Exception e) {
logger.info("添加接受人失败",e);
return false;
}
return true;
}
/**
* 添加抄送人
* @param copyers 多个抄送人要以逗号分隔
* @return 是否添加成功
*/
public boolean setCarBonCopy(String copyers){
try {
mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress
.parse(copyers));
} catch (Exception e) {
logger.info("添加抄送人出现异常",e);
return false;
}
return true;
}
/**
* 是否需要验证
* @param need
*/
public void setNeedAuth(final boolean need) {
if (need) {
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
}
/**
* 发出
* @return 是否发送成功
*/
public boolean sendOut(String userName,String password){
try {
mimeMsg.setContent(mp);//添加附件和正文
mimeMsg.saveChanges();//更新邮件的同步信息以和内容保持同步
Session session = Session.getDefaultInstance(props,null);
Transport transport = session.getTransport("smtp");
//参数1服务器的类型值,参数2用户名,参数3密码
transport.connect(props.getProperty("mail.smtp.host"),userName,password);
//添加邮件类以及地址发出邮件
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
transport.close();
} catch (Exception e) {
logger.info("邮件发送失败",e);
return false;
}
return true;
}
/**
* 用户调用的发送邮件方法
* @param mailTheme 邮件主题
* @param mailBody 邮件内容
* @param mulitpart 附件
* @param users 发送人
* @param recevers 接收人,多个接收人要以逗号分隔
* @param copyers 抄送人,多个接收人要以逗号分隔
* @return 是否发送成功
* @desc 因为只有在服务器挂了等特殊情况下才需要,所以每次在静态方法中
*/
public static boolean sendEmail(String mailTheme,String mailBody,String affixFileName,String users,String recevers,String copyers,String userName,String password){
boolean flag = false;
SendEmail email = new SendEmail(TYPE.SMTP_TNICE);
email.setNeedAuth(false);
email.setMailTheme(mailTheme);//添加标题
email.setMailBody(mailBody);//添加内容
email.setAffix(affixFileName);
email.setFrom(users);
email.setReceivers(recevers);
email.setCarBonCopy(copyers);
flag = email.sendOut(userName, password);
if(flag){
logger.info("邮件发送成功");
return true;
}else{
logger.info("邮件发送失败");
return false;
}
}
public void setMimeMsg(MimeMessage mimeMsg) {
this.mimeMsg = mimeMsg;
}
public void setSession(Session session) {
this.session = session;
}
public void setProps(Properties props) {
this.props = props;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setMp(Multipart mp) {
this.mp = mp;
}
}
发表评论
-
封装的分页类
2012-03-14 13:34 911public class Page<T>{ ... -
定时器
2012-01-03 22:57 0JDK 1.5之前的定时器 JDK中Timer是表示定时器的意 ... -
自定义数据库连接池
2011-12-29 13:26 0import java.sql.Connection; imp ... -
皮皮书屋
2011-12-29 12:53 0http://www.ppurl.com/tag/java/p ... -
HttpURLConnection详解
2011-12-10 17:22 0通过HttpURLConnection可以请求Web资源。 H ... -
杂文学习
2011-12-05 15:26 01.catalina.bat里面可能有些配置信息,这样启动会去 ... -
利用反射封装的JDBC工具类
2011-11-28 11:44 1768/** * JDBC工具类 */ public ... -
Log4j详解
2011-11-17 11:18 1305log4j由三部分组成:Logger、Appender、Lay ... -
dom4j saxReader解析xml
2011-11-14 17:06 11561import java.io.File; import jav ... -
dom4j API讲解
2011-11-14 17:03 2180Element是dom4j的一个核心元素. 其常用api如下: ... -
ContentType
2011-11-06 20:25 1001ajax开发中, 常遇到下面的几种情况: 1 服务端需要返回 ... -
MD5加密
2011-11-04 16:23 976MD5是一种不可逆的加密算法,虽然该加密算法已经被破解,但是对 ... -
http,ftp实现上传和下载(下)
2011-11-04 16:00 1279如果上传文件比较大或希望上传速度可以快一点可以考虑使用ftp上 ... -
http,ftp实现上传和下载(上)
2011-11-04 15:29 4264ftp是应用层的协议,即文件传输协议。默认使用21端口。通过该 ...
相关推荐
Java Mail 是一个开源的 Java API,它允许开发者在 Java 应用程序中处理电子邮件。这个“java mail 1.4.5 jar_source 天涯浪子”资源包含了 Java Mail 1.4.5 版本的 JAR 包、源代码和相关的文档,以及其依赖的 ...
Java Mail 是一个强大的Java库,它为开发人员提供了一组API,用于处理电子邮件通信。这个名为 "Java Mail.rar" 的压缩包很可能包含了实现这一功能所需的jar文件和其他资源。在这个压缩包中,我们可以找到 "Java Mail...
Java Mail 是一个强大的开源库,用于在Java应用程序中处理电子邮件通信。它提供了API,使得开发者可以方便地发送、接收和管理邮件。这个压缩包文件很可能包含了一组示例代码或工具,帮助我们理解如何使用Java Mail ...
Java Mail API 是一个广泛使用的Java库,用于处理电子邮件通信,包括发送、接收和管理邮件。在本场景中,我们将深入探讨如何使用Java Mail API来访问Lotus Domino邮箱系统。Lotus Domino是由IBM开发的企业级协作平台...
该资源包含了java mail开发所需要的jar,如下: commons-email-1.2-bin.zip commons-email-1.4-bin.zip javamail_1.4.6.zip javamail_1.4.7.zip javax.mail.jar mailapi.jar smtp.jar
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...
Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库提供了全面的API,使得开发者能够方便地实现SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在Java应用...
Java Mail 是一个开源的Java库,它为Java应用程序提供了与各种邮件系统交互的能力。这个"mail-1.4.7.jar"是Java Mail的一个版本,主要用于处理电子邮件的发送和其他相关功能。版本号1.4.7表明这是一个较旧但稳定版本...
Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。在Java Web开发中,它是一个不可或缺的组件,尤其在构建小型系统时,可以作为邮件模块直接应用,无需大量改动。这个压缩包文件包含了与Java Mail相关...
Java Mail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。Java Mail 1.4 源码的分析和理解有助于我们深入探究其内部工作原理,优化邮件处理效率,并能根据需求进行定制化...
Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个工具类的创建旨在简化邮件处理的复杂性,使开发者能够便捷地集成邮件功能。以下是对JavaMail工具类及其相关知识点的详细说明: 1. **...
Java Mail 是一个强大的Java库,专门用于处理电子邮件的发送、接收以及其他相关操作。它提供了丰富的API,使得在Java应用程序中实现邮件通信变得简单且灵活。本文将深入探讨Java Mail的基本概念、工作原理以及如何...
Java Mail和Spring Mail是Java开发中用于处理电子邮件的两个关键库。它们允许开发者在应用程序中实现发送、接收和处理电子邮件的功能。在这个实例中,我们主要关注如何使用Java Mail API和Spring Mail来实现实时的多...
Java Mail 是一个用于处理电子邮件的开源API,它允许Java开发者编写能够发送、接收、存储和检索电子邮件的应用程序。在Java Mail API中,`activation.jar` 和 `mail.jar` 是两个非常重要的组件,它们为Java环境提供...
Java Mail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的能力。这个 API 遵循 JavaBeans Activation Framework (JAF) 规范,允许处理 MIME 类型的数据,包括电子邮件消息。Java ...
Java Mail邮件发送是Java开发中常见的一项功能,用于在应用程序中发送电子邮件。Java Mail API提供了一个标准的接口,使得开发者可以方便地实现SMTP(简单邮件传输协议)和其他邮件协议的功能。下面将详细介绍Java ...
Java邮件服务器(Java Mail Server,简称JMailSrv)是一种基于Java技术构建的邮件服务器软件,主要用于处理电子邮件的接收、发送以及存储等任务。在Java开发环境中,它扮演着重要的角色,为开发者提供了灵活且可扩展...
Java Mail API是Java平台上用于处理电子邮件的标准API,它提供了一组接口和类,使得开发者能够构建应用程序来发送、接收和管理邮件。这个API是Java Community Process(JCP)制定的JSR 919标准的一部分,它允许开发...