JavaMail发送邮件工具类(不带附件)

来源:互联网 发布:中国禁枪怕被推翻 知乎 编辑:程序博客网 时间:2024/05/29 08:35
/*** 2017年11月1日下午12:01:34*/package com.jjmc.dcl.util;import java.util.Date;import java.util.Properties;import javax.mail.BodyPart;import javax.mail.Message;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;import org.apache.log4j.Logger;/**** @author huangtao* 2017年11月1日下午12:01:34* dclTask* @parameter* TODO* 发送邮件*/public class EmailUtil {//日志private static final StringDEBUG_PREFIX= "[EmailUtil]";private static final StringINFO_PREFIX= "<EmailUtil>";private static final StringERROR_PREFIX= "EmailUtil->";
private static Logger logger= Logger.getLogger(EmailUtil.class);

//发送邮件public static void sendEmail(String subject,String content) throws Exception{logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" sendEmail begin");logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" sendEmail begin");try {//从配置文件中读取发送邮件配置(from)String host = ResourceUtil.getConf("dcltask.email.host");String protocol = ResourceUtil.getConf("dcltask.email.protocol");int port = Integer.valueOf(ResourceUtil.getConf("dcltask.email.port"));String username = ResourceUtil.getConf("dcltask.email.username");//String password = ResourceUtil.getConf("dcltask.email.authcode");//需要用授权码登录,不用密码String password = ResourceUtil.getConf("dcltask.email.passsword");String auth = ResourceUtil.getConf("dcltask.email.auth");int connectionTimeout = Integer.valueOf(ResourceUtil.getConf("dcltask.email.connection.timeout"));int timeout = Integer.valueOf(ResourceUtil.getConf("dcltask.email.timeout"));
//从配置文件中读取发送对象(to),多个用户用;来分隔String customerTo = ResourceUtil.getConf("dcltask.email.customer.to");String[] customerToArray = customerTo.split(";");int receiverCountTo = customerToArray.length;//从配置文件中读取发送对象(CC),多个用户用;来分隔String customerCc = ResourceUtil.getConf("dcltask.email.customer.cc");String[] customerCcArray = customerCc.split(";");int receiverCountCc = customerCcArray.length;
Properties props = new Properties();//用户名props.put("username",username);//密码props.put("password",password);//协议props.put("mail.transport.protocol", protocol); //设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)props.put("mail.smtp.host", host);//需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)props.put("mail.smtp.auth", auth);//端口props.put("mail.smtp.port", port); //连接props.put("mail.smtp.connectiontimeout", connectionTimeout); //超时时间props.put("mail.smtp.timeout", timeout); //设置是否使用ssl安全连接props.put("mail.smtp.ssl.enable", "true");//用刚刚设置好的props对象构建一个sessionSession session = Session.getDefaultInstance(props);//有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使//用(你可以在控制台(console)上看到发送邮件的过程)session.setDebug(false);//用session为参数定义消息对象MimeMessage message = new MimeMessage(session);//加载发件人地址message.setFrom(new InternetAddress(username));
//加载收件人地址InternetAddress[] addressTo = new InternetAddress[receiverCountTo];for (int i = 0; i < receiverCountTo; i++) {addressTo[i] = new InternetAddress(customerToArray[i]);message.addRecipients(Message.RecipientType.TO,addressTo);//加载抄送人InternetAddress[] addressCc = new InternetAddress[receiverCountCc];for (int i = 0; i < receiverCountCc; i++) {addressCc[i] = new InternetAddress(customerCcArray[i]);message.addRecipients(Message.RecipientType.CC,addressCc);
message.addHeader("charset", "UTF-8"); //加载标题message.setSubject(subject);// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件Multipart multipart = new MimeMultipart(); //设置邮件的文本内容BodyPart contentPart = new MimeBodyPart();//设置为html格式的邮件contentPart.setContent(content,"text/html;charset=UTF-8");multipart.addBodyPart(contentPart);//添加附件// BodyPart messageBodyPart= new MimeBodyPart();//添加附件的标题//这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码// sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();// messageBodyPart.setFileName("=?GBK?B?"+enc.encode(affixName.getBytes())+"?=");// multipart.addBodyPart(messageBodyPart);
//将multipart对象放到message中message.setContent(multipart);//保存邮件message.saveChanges();//发送邮件Transport transport = session.getTransport(protocol);//连接服务器的邮箱transport.connect(host, port, username, password);//把邮件发送出去transport.sendMessage(message, message.getAllRecipients());transport.close();} catch (Exception e) {logger.error(ERROR_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+"execute sendEmail occur error,the exception is:"+e);throw e;}logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" sendEmail end");logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" sendEmail end");}
/*** 邮件内容判空* 2017年11月4日上午7:40:08* @param value* @return* @parameter* String**/public static String isEmptyEmailContent(String value) throws Exception{logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" isEmptyEmailContent end");logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" isEmptyEmailContent end");try {String data = null;if(value != null){data = value;}else{data = "0";}logger.debug(DEBUG_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" isEmptyEmailContent end");logger.info(INFO_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+" isEmptyEmailContent end");return data;} catch (Exception e) {logger.error(ERROR_PREFIX+"current time is:"+DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")+"execute isEmptyEmailContent occur error,the exception is:"+e);throw e;}}}
原创粉丝点击