- 浏览: 212284 次
- 性别:
- 来自: 北京
文章分类
实例
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 875public 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 1737/** * JDBC工具类 */ public ... -
Log4j详解
2011-11-17 11:18 1271log4j由三部分组成:Logger、Appender、Lay ... -
dom4j saxReader解析xml
2011-11-14 17:06 11518import java.io.File; import jav ... -
dom4j API讲解
2011-11-14 17:03 2160Element是dom4j的一个核心元素. 其常用api如下: ... -
ContentType
2011-11-06 20:25 962ajax开发中, 常遇到下面的几种情况: 1 服务端需要返回 ... -
MD5加密
2011-11-04 16:23 950MD5是一种不可逆的加密算法,虽然该加密算法已经被破解,但是对 ... -
http,ftp实现上传和下载(下)
2011-11-04 16:00 1257如果上传文件比较大或希望上传速度可以快一点可以考虑使用ftp上 ... -
http,ftp实现上传和下载(上)
2011-11-04 15:29 4229ftp是应用层的协议,即文件传输协议。默认使用21端口。通过该 ...
相关推荐
该资源包含了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 1.4.5 jar包、源代码、doc文档,还有包含所依赖的jaf 1.1.1的jar包和源代码 。
Java Mail.rar 利用其jar包可以利用java发送邮件的功能,javamail是一个非常有用的jar
java mail开发所需jar包:activation.jar,j2ee.jar,mail.jar,放在了lib.rar中
张孝祥的java mail开发教程 Java Mail API的开发是SUN为Java开发者提供公用API框架的持续努力的良好例证。提倡公用框架,反对受限于供应商的解决方案, 充分预示着一个日益开放的开发环境的建立。Java Mail API的...
用java mail发邮件源码,支持多种邮局,支持单发和群发。
NULL 博文链接:https://wenxiang-tune.iteye.com/blog/846379
封装了一个java mail的jar包,只需设置邮件的基本信息 就可发邮件: //这个类主要是设置邮件 MailSenderInfo mailInfo = new MailSenderInfo(); mailInfo.setMailServerHost("smtp.163.com"); mailInfo....
用java 开发email 使用的包都有了 mail-1.4.1.jar activation.jar commons-email-1.2.jar commons-email-1.2-javadoc.jar commons-email-1.2-sources.jar
Java毕业设计源码-基于Java mail的邮件收发系统(系统+开题报告+任务书+文献综述+答辩PPT)(IT计算机)Java毕业设计源码-基于Java mail的邮件收发系统(系统+开题报告+任务书+文献综述+答辩PPT)(IT计算机)Java...
java mail 邮件发送,可发送附件;多个附件以,号分开;可抄送、密送等多个抄送、密送以,号分开。详细发送DEMO参考SendMailTest.java类: SendMailInfo mailInfo = new SendMailInfo("mail.china1168.com", true, ...
Java mail server, used for development.
基于B/S的邮件系统客户端软件,系统全部使用java编写,Web页面使用EasyJWeb框架开发,主要通过调用java mail实现邮件的收发。 基于B/S的邮件系统客户端软件,系统全部使用java编写,Web页面使用EasyJWeb框架开发,主要通过...
文中使用Java mail API写的邮件收发例子。
Java Mail中文文档 Java Mail中文文档
java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器java mail服务器
java mail 1.4 源码 自己要用就下载了,拿出来分享一下,大家也可以看看java mail 的源码是怎么写的.
javaMail jar包 解压后把activation.jar和javax.mail.jar 拷贝到 WEB-INF/lib 下就可以直接在项目中使用 这是我从官网找了好久找到的jar包,我把下载到的一个api的jar包也放里面了。