首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

施用apache commons email 发送带附件邮件(可中文)

2012-06-30 
使用apache commons email 发送带附件邮件(可中文)Java Mail 实在难用,伤不起,发现个简单方便的邮件组件,

使用apache commons email 发送带附件邮件(可中文)

Java Mail 实在难用,伤不起,发现个简单方便的邮件组件,在Java Mail的基础上又包了一层,代码如下:附件可以是中文

(有问题和意见的欢迎拍砖)

?

?

package com.richmobi.util;import java.io.File;import java.io.UnsupportedEncodingException;import java.net.MalformedURLException;import java.net.URLDecoder;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.mail.internet.MimeUtility;import org.apache.commons.mail.EmailAttachment;import org.apache.commons.mail.EmailException;import org.apache.commons.mail.HtmlEmail;import org.apache.log4j.Logger;/** * 创建日期:2011-12-14 * Title: 邮件发送工具类 * Description:对本文件的详细描述,原则上不能少于50字 * @author hongliang.wang * @mender:(文件的修改者,文件创建者之外的人) * @version 1.0 * Remark:认为有必要的其他信息 */public class SendMailUtil {private static final Logger log = Logger.getLogger(SendMailUtil.class);private static ExecutorService executor;static{executor = Executors.newFixedThreadPool(50);}/** * 功能:发送邮件  * 作者: hongliang.wang * 创建日期:2011-12-14 * 修改者: mender * 修改日期: modifydate * @param mialTitle 邮件主题 * @param attachPath 附件地址 * @param attachName 附件显示名称 * @param toEmail 收件人 * @param mailContent 邮件内容 * @throws MalformedURLException  * @throws UnsupportedEncodingException  * @throws EmailException  */public static  void sendEmail(final String mialTitle,final String attachPath,final String attachName,final String toEmail,final String mailContent) throws MalformedURLException, UnsupportedEncodingException, EmailException{final String mailServer = Configer.get("smtpServer");final String mailName = Configer.get("mailName");final String mailPwd = Configer.get("mailPassword");executor.execute(new Runnable(){public void run() {EmailAttachment  attachment = null;if(attachPath!=null){attachment = new EmailAttachment();try {attachment.setPath(attachPath);attachment.setName(MimeUtility.encodeText(attachName));attachment.setDisposition(EmailAttachment.ATTACHMENT);attachment.setDescription("Picture of John");}catch (UnsupportedEncodingException e) {e.printStackTrace();log.info(e.getMessage());}}HtmlEmail email = new HtmlEmail();//可以发送html类型的邮件   email.setHostName(mailServer);//指定要使用的邮件服务器   email.setAuthentication(mailName, mailPwd);//使用163的邮件服务器需提供在163已注册的用户名、密码   email.setCharset("UTF-8");     try {email.setFrom(mailName,"GMIC2012");//设置发件人   email.addTo(toEmail);//设置收件人   email.setSubject(mialTitle);//设置主题 email.setHtmlMsg((mailContent==null||"".equals(mailContent))?"":mailContent);//可以发送htmlif(attachPath!=null){email.attach(attachment);}log.info("mailServer:"+Configer.get("smtpServer")+"mailTo: "+ toEmail);log.info("邮件正文:"+mailContent);email.send();} catch (EmailException e) {e.printStackTrace();log.info(e.getMessage());}}});}public static void main(String[] args) throws MalformedURLException, UnsupportedEncodingException, EmailException {String fileName = "Nginx配置.doc";String path = URLDecoder.decode(SendMailUtil.class.getClassLoader().getResource("info"+File.separator+fileName).toString(),"utf-8").replaceAll("file:/", "");SendMailUtil.sendEmail("测试中文",path, fileName,"68644421@qq.com", "测试正文");}}

?

注:Config 是自己写的工具类,邮件发送需要的参数都写在config.properties 。

?

1 楼 xyang81 2012-06-09   使用javamail发送带中文的附件也是很简单的,设置附件的文件名时,使用javax.mail.internet.MimeUtility的encodeText()方法对文件名编码即可. 2 楼 wanghlwin 2012-06-14   xyang81 写道使用javamail发送带中文的附件也是很简单的,设置附件的文件名时,使用javax.mail.internet.MimeUtility的encodeText()方法对文件名编码即可.
好的 谢谢分享 个人认为,commons email只是相对操作简单写,不过功能方面确实没有java email 的api强大,不过日常的一般发邮件功能都可以应付了。

热点排行