- 浏览: 2288128 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (357)
- J2EE (49)
- JavaScript (40)
- Spring (19)
- Struts (5)
- CSS (8)
- Hibernate (16)
- Java (67)
- DWR (4)
- JSON (3)
- XFIRE (1)
- Tomcat (1)
- Ant (2)
- 设计模式 (2)
- 经典收藏 (2)
- JSP (10)
- Linux (0)
- WebLogic (11)
- myeclipse (13)
- Buffalo (4)
- 文件上传相关 (1)
- oracle (33)
- html (6)
- JSTL (3)
- SVN (2)
- GIT (1)
- 孙卫琴(Java网络编程精解) (1)
- DOM4J (2)
- Swing (1)
- AJAX (1)
- Eclipse (5)
- 日志组件 (3)
- PowerDesigner (1)
- Jquery (22)
- IT技术开发相关网址 (1)
- Nutz (1)
- 其它 (1)
- Velocity (3)
- WebService (1)
- MySql (2)
- Android (1)
- Maven (2)
- Quartz (11)
- Lucene (1)
- springsource (1)
- Junit (1)
- Activiti (0)
最新评论
-
yzlseu:
拼凑,没有营养
Activiti进阶—分配组任务 -
zhangsenhao:
非常赞!代码很清楚
SpringMVC3.0+MyIbatis3.0(分页示例) -
xiamw2000:
分页写得不对,应该是 : order by ${orderNa ...
SpringMVC3.0+MyIbatis3.0(分页示例) -
sheertewtw:
...
SpringMVC:上传与下载 -
kingtoon:
...
XSS之xssprotect
参考资料
1 用Apache Commons Email简化邮件发送
http://www.blogjava.net/fastunit/archive/2008/01/25/177799.html
我测试时是用的是:新浪的邮箱:smtp.sina.com也是可以的
如下设置:
Exception: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
参考文章:http://zhidao.baidu.com/question/227409027.html
解答: 配置JavaMail的Properties时,不要指定mail.smtp.socketFactory.class,因为TLS使用的是普通的Socket。 然后指定属性mail.smtp.starttls.enable为true.
介绍
Commons Email封装了javamail,使用非常简单。
功能:简单文本邮件、带附件的邮件、HTML格式的邮件
官方首页:http://commons.apache.org/email/,目前最新版本是1.2
官方示例:http://commons.apache.org/email/userguide.html
工程环境:XP+Myeclipse6.5+JDK1.6
一 实现功能
1 封装了常用的四种发送Email的方法(文本,html,img,file),用户只要调用一个工厂类传递相应的邮件的属性如from, to,cc, subject,text,或者是消息对象
2 解决了发送邮件附件中的中文筹码问题
3 支持链式风格
4 可以混合发送多种消息(text,html,img,file)
二 工程图片
或者你也可以这样,使用打包好的jar:email.commons.util.jar
,见附件
三 调用说明
1 发送文本消息
2 发送含有附件的消息
3 发送Html格式消息
四 代码如下
1 消息发送类:MailMessageFactory
2 消息对象:SendMessage
3 MailType.java
4 SendMailType.java
5 其它的类请参见S
pring之Email<封装了常用的四种发送Email的方法(TEXT,HTML,IMG,FILE)>
http://liuzidong.iteye.com/blog/1114783
1 用Apache Commons Email简化邮件发送
http://www.blogjava.net/fastunit/archive/2008/01/25/177799.html
我测试时是用的是:新浪的邮箱:smtp.sina.com也是可以的
如下设置:
Exception: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
参考文章:http://zhidao.baidu.com/question/227409027.html
解答: 配置JavaMail的Properties时,不要指定mail.smtp.socketFactory.class,因为TLS使用的是普通的Socket。 然后指定属性mail.smtp.starttls.enable为true.
介绍
Commons Email封装了javamail,使用非常简单。
功能:简单文本邮件、带附件的邮件、HTML格式的邮件
官方首页:http://commons.apache.org/email/,目前最新版本是1.2
官方示例:http://commons.apache.org/email/userguide.html
工程环境:XP+Myeclipse6.5+JDK1.6
一 实现功能
1 封装了常用的四种发送Email的方法(文本,html,img,file),用户只要调用一个工厂类传递相应的邮件的属性如from, to,cc, subject,text,或者是消息对象
2 解决了发送邮件附件中的中文筹码问题
3 支持链式风格
4 可以混合发送多种消息(text,html,img,file)
二 工程图片
或者你也可以这样,使用打包好的jar:email.commons.util.jar
,见附件
三 调用说明
1 发送文本消息
//默认空构造为发送文本类型 //默认空构造为发送文本类型 MailMessageFactory mms = new MailMessageFactory(); mms.setSubject("使用Apache Commons Email 组件发送").setText("发送普通文本消息").send();
2 发送含有附件的消息
MailMessageFactory mms = new MailMessageFactory(SendMailType.FILE); mms.setSubject("使用Apache Commons Email 组件发送文本及附件消息").setText("天涯海角") .setEmailAttachment("美女.jpg","美女图片","c:\\4.jpg").send();
3 发送Html格式消息
MailMessageFactory mms = new MailMessageFactory(SendMailType.HTML); String html = "<html><head><meta http-equiv='content-type' content='text/html; charset=GBK'>" + "</head><body><h1>使用Apache Commons Email发送的邮件</h1><img src=\"cid:img0\"><br><img src=\"cid:img1\"></body></html>"; mms.setSubject("使用Apache Commons Email 网页格式加入图片") .setEmailAttachment("美女.jpg","美女图片","c:\\4.jpg") .setEmailHtmlImgAttachment("美女2.jpg","美女图片2","img0","c:\\5.jpg") .setEmailHtmlImgUrl("apache.jpg",null, "img1","http://www.apache.org/images/asf_logo_wide.gif") .setHtmlText(html) .send();
四 代码如下
1 消息发送类:MailMessageFactory
package net.liuzd.email.commons; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.MimeUtility; import net.liuzd.email.EmailEntity; import org.apache.commons.mail.Email; import org.apache.commons.mail.EmailAttachment; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.HtmlEmail; import org.apache.commons.mail.MultiPartEmail; import org.apache.commons.mail.SimpleEmail; /** * Title: Description: Copyright: Copyright (c) 2011 * Company:http://liuzidong.iteye.com/ Makedate:2011-7-5 下午02:23:49 * @author liuzidong * @version 1.0 * @since 1.0 * */ public class MailMessageFactory { private Email email; private SendMailType sendMailType; private SendMessage sendMessage; private static final String ENCODING = EmailEntity.EMAIL_ENCODING; /** * 默认为发送文本类型 */ public MailMessageFactory() { this(SendMailType.TEXT); } public MailMessageFactory(SendMailType sendMailType) { this.sendMailType = sendMailType; sendMessage = new SendMessage(); switch (this.sendMailType) { case TEXT: email = new SimpleEmail(); break; case HTML: email = new HtmlEmail(); break; case FILE: email = new MultiPartEmail(); } //配置相关邮件设置 email.setHostName(EmailEntity.EMAIL_HOST); email.setAuthentication(EmailEntity.EMAIL_USERNAME,EmailEntity.EMAIL_PASSWORD); email.setCharset(ENCODING); // 编码 } /** * @param to 接收者人地址 * @return */ public MailMessageFactory setTo(String to) { sendMessage.setTo(to); return this; } /** 发送标题 */ public MailMessageFactory setSubject(String subject) { sendMessage.setSubject(subject); return this; } /** 发送内容 */ public MailMessageFactory setText(String text) { sendMessage.addText(text); return this; } public MailMessageFactory setHtmlText(String htmlText) { sendMessage.addHtmlText(htmlText); return this; } /** * 添加本地文件 * @param attachMentName 发送到Email的附件名称 * @param description 附件描述 * @param file 实际图片数据源 * @return */ public MailMessageFactory setEmailAttachment(String attachMentName,String description,String filePath){ try { sendMessage.addFile(MailType.FILE, MimeUtility.encodeWord(attachMentName),description,null,filePath); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return this; } /** * 添加到Email中的Html格式中的的本地图片 * */ public MailMessageFactory setEmailHtmlImgAttachment(String attachMentName,String description,String cldName,String filePath){ try { sendMessage.addFile(MailType.IMG, MimeUtility.encodeWord(attachMentName),description,cldName,filePath); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return this; } /** * 添加到Email中的Html格式中的的网络图片 * */ public MailMessageFactory setEmailHtmlImgUrl(String attachMentName,String description,String cldName,String url){ try { sendMessage.addFile(MailType.URL, MimeUtility.encodeWord(attachMentName),description,cldName,url); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return this; } public void send(){ //检查接收人地址是否为空 String to = sendMessage.getTo(); if(null == to || to.length() == 0){ to = EmailEntity.EMAIL_TO; sendMessage.setTo(to); } String subject = sendMessage.getSubject(); if(null != subject && !"".equals(subject)){ email.setSubject(subject); } try { email.addTo(sendMessage.getTo()); email.setFrom(EmailEntity.EMAIL_FROM); String text = sendMessage.getEmailText(); if(null != text && !"".equals(text)){ //设置内容的字符集为UTF-8,先buildMimeMessage才能设置内容文本 try { email.getMimeMessage().setText(text,ENCODING); } catch (MessagingException e) { e.printStackTrace(); } //email.setMsg(text); } String html = sendMessage.getEmailHtmlText(); //发送文件 List<SendMessage> lists = sendMessage.getImages(); EmailAttachment attachment = null; String filePath = null; String imgName = null; for(SendMessage entity : lists){ filePath = entity.getFilePath(); String clidName = entity.getCitName(); imgName = entity.getImgName(); if(entity.getMailType() == MailType.FILE){ attachment = new EmailAttachment(); attachment.setPath(filePath); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setDescription(entity.getDescription()); attachment.setName(entity.getImgName()); ((MultiPartEmail)email).attach(attachment); }else if(entity.getMailType() == MailType.IMG){ File file = new File(filePath); imgName = entity.getImgName(); String cid = ((HtmlEmail) email).embed(file, MimeUtility.encodeText(imgName)); //得到用户定义的在html中图片的名字clid html = html.replace(clidName, cid); }else if(entity.getMailType() == MailType.URL){ URL url = new URL(filePath); imgName = entity.getImgName(); String cid = ((HtmlEmail) email).embed(url, MimeUtility.encodeText(imgName)); html = html.replace(clidName, cid); } } if(sendMailType != SendMailType.TEXT){ if(null != html && !"".equals(html) && sendMailType == SendMailType.HTML){ System.out.println("HTML: "+html); ((HtmlEmail)email).setHtmlMsg(html); } } long startTime = System.currentTimeMillis(); email.send(); long endTime = System.currentTimeMillis(); System.out.println(sendMailType + "成功!,耗费时间: " + (endTime - startTime)+"毫秒!"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (EmailException e) { e.printStackTrace(); } } }
2 消息对象:SendMessage
public class SendMessage { private String to; private String subject; private String description; private String citName; private String imgName; private String filePath; private MailType mailType; private String form; private List<String> texts = new ArrayList<String>(); private List<String> htmlTexts = new ArrayList<String>(); //图片集合 private List<SendMessage> images = new ArrayList<SendMessage>(); public MailType getMailType() { return mailType; } public void setMailType(MailType mailType) { this.mailType = mailType; } public void addFile(MailType mailType,String imgName,String description,String citName,String filePath){ images.add(new SendMessage(mailType,imgName,description,citName,filePath)); } public void addText(String text){ texts.add(text); } public void addHtmlText(String htmlText){ htmlTexts.add(htmlText); } public SendMessage(MailType mailType,String imgName,String description,String citName,String filePath) { super(); this.mailType = mailType; this.imgName = imgName; this.description = description; this.citName = citName; this.filePath = filePath; } public List<SendMessage> getImages() { return images; } public void setImages(List<SendMessage> images) { this.images = images; } public String getForm() { return form; } public void setForm(String form) { this.form = form; } public String getImgName() { return imgName; } public void setImgName(String imgName) { this.imgName = imgName; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public SendMessage() { } public SendMessage(String to, String subject, String text) { super(); this.to = to; this.subject = subject; addText(text); } @Override public String toString() { return new StringBuilder() .append("接收人地址: ").append(to) .append(",发送人地址: ").append(form) .append(",发送标题: ").append(subject) .append(",发送内容: ").append(getEmailText()) .append(",发送网页内容: ").append(getEmailHtmlText()) .toString(); } public String getEmailText(){ StringBuilder sbr = new StringBuilder(); List<String> list = getTexts(); for(String text : list){ sbr.append(text); } return sbr.toString(); } public String getEmailHtmlText(){ StringBuilder sbr = new StringBuilder(); List<String> list = getHtmlTexts(); for(String text : list){ sbr.append(text); } return sbr.toString(); } public List<String> getTexts() { return texts; } public void setTexts(List<String> texts) { this.texts = texts; } public List<String> getHtmlTexts() { return htmlTexts; } public void setHtmlTexts(List<String> htmlTexts) { this.htmlTexts = htmlTexts; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getCitName() { return citName; } public void setCitName(String citName) { this.citName = citName; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } }
3 MailType.java
public enum MailType { /** * 图片类型 * */ IMG, /** * 文件类型 * */ FILE, /** * 网络类型 * */ URL; @Override public String toString() { String message = null; switch (this) { case IMG : message = ",包含图片"; case URL : message = ",包含网络文件"; default: message = ",包含附件"; break; } return message; } }
4 SendMailType.java
public enum SendMailType { /** * 文本类型 * */ TEXT, /** * 文本及附件类型 * */ FILE, /** * HTML类型,包含文本及附件类型及网络资源 * **/ HTML; @Override public String toString() { String message = null; switch (this) { case TEXT: message = "发送文本消息"; break; case FILE: message = "发送附件消息"; break; case HTML : message = "发送html消息"; break; } return message; } }
5 其它的类请参见S
pring之Email<封装了常用的四种发送Email的方法(TEXT,HTML,IMG,FILE)>
http://liuzidong.iteye.com/blog/1114783
- email.commons.util.source.zip (6.8 KB)
- 下载次数: 37
- email.commons.util.jar (10 KB)
- 下载次数: 24
- CommonsEmail_project_.zip (374.3 KB)
- 下载次数: 58
发表评论
-
【转载】Eclipse Class Decompiler——Java反编译插件
2018-06-24 11:09 1355参见:jd-eclipse 的安装和使用(最新版的) h ... -
java json-lib & jQuery & jsonp
2016-06-30 11:31 824参考链接: 1、http://hanqunfeng.iteye ... -
Java多线程序源码
2016-06-24 15:04 10331、《Java多线程编程核心技术》源代码(高洪岩) 2、Jav ... -
Spring & Junit
2016-05-27 13:18 7511 测试基类(BaseJunit4Test) import ... -
随机分配算法(Intege)
2016-01-08 13:05 5193参考资料: http://blog.csdn.net/yaer ... -
XSS之xssprotect
2012-12-07 23:03 29487参考资料 1 跨网站脚本 ... -
myeclispe之图解weblogic81配置
2011-11-07 10:11 1615一 创建Weblogic81域(如下图) 注意事项:一般 ... -
Java之Thread(线程题)
2011-10-31 12:33 1973特别说明:java线程相关的参考了张孝祥老师的代码 参考资料 ... -
Java之ThreadLocal(Synchronized)
2011-10-31 10:10 2691参考资料 1 深入研究java.lang.ThreadLoca ... -
Java之synchronized,wait,notify结合运用示例
2011-10-26 11:54 5936场景一:要求二个线程各 ... -
Java之synchronized深入应用
2011-10-23 08:03 1940参考资料 1 java synchronized详解 http ... -
Java之Timer入门
2011-10-11 15:32 1692参考资料 1 java中timer用 ... -
Java之线程(匿名内部类)
2011-10-10 16:36 164281 Thread对象 Thread t = new Thr ... -
Java之线程(join)
2011-10-10 15:39 1479运用场景:多个线程之间 ... -
Java之线程(synchronized,wait(),notify(),notifyAll())
2011-10-10 15:03 3249参考资料 Java多线程入门大全(适用于有一定基础者) htt ... -
Java之线程(sleep,线程名)
2011-10-10 13:09 9715参考资料 1 Java线程:创建与启动 http://lava ... -
Java之线程入门
2011-10-10 11:11 1533参考资料 1 Java线程:概 ... -
java之表反向生成类
2011-09-23 16:41 3481环境:XP+JDK1.5+Oracle10g 注意事项 1 请 ... -
java之线程, NIO学习资料
2011-09-19 12:13 1130Concurrent In Java 6 第一部分 集合 ... -
Java之BigDecimal
2011-09-15 10:12 18025参考资料 1 java.math.BigDecimal的用法 ...
相关推荐
这个库是对JavaMail API的一个方便的封装,简化了通过Java程序发送电子邮件的过程。在JavaMail中,配置和使用邮件服务可能相对复杂,而Apache Commons Mail则通过提供预定义的邮件实现和简单易用的接口来解决了这个...
总结一下,Apache Commons Email库为Java开发者提供了方便的邮件发送功能,简化了与SMTP服务器的交互。通过`SendMail.java`文件,我们可以学习到如何使用这个库来创建、配置和发送电子邮件,从而在项目中实现更高效...
Apache Commons Pool2是Java开发中的一个对象池库,主要用于提高对象的重用效率,从而提升系统性能。在本文中,我们将深入探讨这个库的核心概念、设计模式以及如何通过源码学习来理解其工作原理。 首先,Apache ...
Apache Commons BeanUtils是Apache软件基金会的一个开源项目,它提供了一组实用工具类,用于简化JavaBean对象的操作。这个库的核心是`org.apache.commons.beanutils`包,其中包含了大量的辅助方法,使得开发者可以...
`javamail`是一个强大的Java API,用于处理邮件服务器交互,而`commons-mail`是Apache Commons项目的一部分,提供了一个更简单的接口来发送邮件。 首先,我们需要了解`javamail`的核心概念。它主要涉及`Session`、`...
Apache Commons Compress库是Java平台上的一个开源项目,专门用于处理各种不同的压缩格式,包括tar、gzip、bzip2等。这个库为开发者提供了一种简单、统一的方式来操作这些压缩格式,极大地简化了与压缩文件相关的...
在描述中提到的"org.apache.commons.io.FileUtils"是Apache Commons IO中的一个关键类,它提供了大量静态方法来简化文件操作,如复制、移动、删除、读写文件等。以下是一些FileUtils类中的核心功能: 1. 文件复制:...
10. **Commons Email**: 支持发送电子邮件的工具类库,可以方便地构建和发送复杂格式的邮件。 以上只是Apache Commons部分模块的简介,实际上还有更多模块如DBUtils(数据库操作)、Codec(编码解码)、Exec(执行...
1. "美化签名.exe" - 这可能是一个用于创建或编辑电子邮件签名的可执行文件,可能与Apache Commons Email项目无关,但可以作为发送邮件时个性化和专业化的工具。 2. "commons-email-1.1-src" - 这可能是Apache ...
Commons Emails 是 Apache Jakarta 项目的一部分,它是一个 Java 库,设计用于简化在 Java 应用程序中发送电子邮件的过程。这个库提供了丰富的功能,使得开发者能够更轻松地处理复杂的邮件构造和发送任务,而无需...
"commons-email"是一个Java库,由Apache软件基金会开发并维护,用于简化电子邮件的创建和发送。这个库是Apache Commons项目的一部分,旨在提供一个强大的、易于使用的API,以便开发者能够高效地处理电子邮件相关的...
commons-dbutils的再封装jar包,Blog文件的示例代码
`commons-email`是一个用于创建和发送电子邮件的Java库。它提供了一种简单且灵活的方式来构建和发送电子邮件,而无需深入了解JavaMail API的复杂性。这个库支持多种邮件服务,包括SMTP、SMTPS(安全SMTP)和EWS...
在标题中提到的 "commons-logging-1.2" 是这个库的一个特定版本,它包含了对常见日志框架的封装,使得开发者可以更方便地切换或集成不同的日志实现。 在描述中提到的问题 "java.lang.NoClassDefFoundError: org/...
在这个工程类中,可能使用了JavaMail API或类似库,如Apache Commons Email,它们提供了与SMTP服务器交互的接口,处理验证、加密和附件等复杂任务。下面将详细解释邮件发送的相关知识点: 1. **SMTP配置**:邮件...
Apache Commons DBUtils是Apache软件基金会开发的一个开源项目,它提供了一套简洁、高效且实用的工具类,用于简化Java应用程序中的数据库操作。这个项目的最新版本为"commons-dbutils-1.4.jar",它的主要目标是减轻...
### Apache Jakarta Commons 使用手册知识点详解 #### 一、概述 《Apache Jakarta Commons 使用手册》是一部详细介绍Apache Jakarta Commons项目下的各种Java组件的专业书籍。该书由Will Iverson编写,旨在为...
Apache Commons Email是一个强大的Java库,专门用于简化电子邮件的发送。标题中的"commons_mail.jar"是这个库的可执行JAR文件,它包含了Apache Commons Email项目的核心功能。这个库是Apache软件基金会开发的,是对...
`commons-email-1.2.jar`是Apache Commons Email库的一部分,它提供了一个高级接口来简化Java中的电子邮件发送。这个库包含了创建、配置和发送电子邮件的所有必要功能,包括添加附件、设置主题、正文以及处理抄送和...