packagecom.dmefx.dmeadmin.service.impl;importjava.io.File;importjava.io.IOException;importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjava.util.Properties;importjavax.mail.MessagingException;importjavax.mail.internet.MimeMessage;importorg.apache.log4j.Logger;importorg.apache.velocity.app.VelocityEngine;importorg.springframework.core.io.FileSystemResource;importorg.springframework.mail.javamail.JavaMailSender;importorg.springframework.mail.javamail.MimeMessageHelper;importorg.springframework.stereotype.Component;importorg.springframework.transaction.annotation.Isolation;importorg.springframework.transaction.annotation.Propagation;importorg.springframework.transaction.annotation.Transactional;importorg.springframework.ui.velocity.VelocityEngineUtils;importcom.dmefx.dmeadmin.service.MailsendService;importcom.dmefx.dmeadmin.utils.StringUtil;importcom.dmefx.dmeadmin.utils.WebContextUtil;importfreemarker.template.Configuration;
@Transactional(propagation= Propagation.REQUIRED, isolation =Isolation.DEFAULT)
@Component("mailsendService")public class MailsendServiceImpl implementsMailsendService {/**Log4j日志处理(@author: victor)*/
private static final Logger log = Logger.getLogger(MailsendServiceImpl.class);/*** @description Text或者HTML格式邮件的方法
*@authorVictor
*@return发送成功返回true;否则,返回false;*/@Transactional(readOnly= false) //必须设置为false,因为此处切入了日志的保存逻辑
publicBoolean sendMail(String subject, String text, String emailAdress,
JavaMailSender javaMailSender, Boolean type) {
MimeMessage mMessage= javaMailSender.createMimeMessage();//创建邮件对象
MimeMessageHelper mMessageHelper;
Properties prop= newProperties();try{//从配置文件中拿到发件人邮箱地址
prop.load(this.getClass().getResourceAsStream("/mail.properties"));
String from= prop.get("mail.smtp.username") + "";
mMessageHelper= new MimeMessageHelper(mMessage, true, "UTF-8");//发件人邮箱
mMessageHelper.setFrom(from);//收件人邮箱
mMessageHelper.setTo(emailAdress);//邮件的主题也就是邮件的标题
mMessageHelper.setSubject(subject);//邮件的文本内容,true表示文本以html格式打开
if(type) {
mMessageHelper.setText(text,true);
}else{
mMessageHelper.setText(text,false);
}
javaMailSender.send(mMessage);//发送邮件
} catch(MessagingException e) {
e.printStackTrace();
log.debug("邮件发送错误:" +e);
}catch(IOException e) {
e.printStackTrace();
log.debug("邮件发送文件错误:" +e);
}return true;
}/*** @description FreeMarker模板格式的邮件的方法
*@authorVictor
*@return发送成功返回true;否则,返回false;*/@Transactional(readOnly= false) //必须设置为false,因为此处切入了日志的保存逻辑
publicBoolean sendMailFreeMarker(String subject, String location, String emailAdress, JavaMailSender javaMailSender,
Configuration freeMarkerConfiguration) {
MimeMessage mMessage= javaMailSender.createMimeMessage();//创建邮件对象
MimeMessageHelper mMessageHelper;
Properties prop= newProperties();try{//从配置文件中拿到发件人邮箱地址
prop.load(this.getClass().getResourceAsStream("/mail.properties"));
String from= prop.get("mail.smtp.username") + "";
mMessageHelper= new MimeMessageHelper(mMessage, true);//发件人邮箱
mMessageHelper.setFrom(from);//收件人邮箱
mMessageHelper.setTo(emailAdress);//邮件的主题也就是邮件的标题
mMessageHelper.setSubject(subject);//解析模板文件
mMessageHelper.setText(WebContextUtil.getFreemarkerText(freeMarkerConfiguration), true);//通过文件路径获取文件名字
String filename =StringUtil.getFileName(location);//定义要发送的资源位置
File file = newFile(location);
FileSystemResource resource= newFileSystemResource(file);
mMessageHelper.addAttachment(filename, resource);//在邮件中添加一个附件
javaMailSender.send(mMessage);//发送邮件
} catch(MessagingException e) {
e.printStackTrace();
log.debug("邮件发送错误:" +e);
}catch(IOException e) {
e.printStackTrace();
log.debug("邮件发送文件错误:" +e);
}return true;
}/*** @description Velocity模板引擎
*@authorVictor
*@return发送成功返回true;否则,返回false;*/@Transactional(readOnly= false) //必须设置为false,因为此处切入了日志的保存逻辑
publicBoolean sendMailVelocity(String subject, String location, String emailAdress, JavaMailSender javaMailSender,
VelocityEngine velocityEngine) {
MimeMessage mMessage= javaMailSender.createMimeMessage();//创建邮件对象
MimeMessageHelper mMessageHelper;
Properties prop= newProperties();try{//从配置文件中拿到发件人邮箱地址
prop.load(this.getClass().getResourceAsStream("/mail.properties"));
System.out.println(this.getClass().getResourceAsStream("/mail.properties"));
String from= prop.get("mail.smtp.username") + "";
mMessageHelper= new MimeMessageHelper(mMessage, true, "UTF-8");//发件人邮箱
mMessageHelper.setFrom(from);//收件人邮箱
mMessageHelper.setTo(emailAdress);//邮件的主题也就是邮件的标题
mMessageHelper.setSubject(subject);
Map map = new HashMap();//获取日期并格式化
Date date = newDate();
DateFormat bf= new SimpleDateFormat("yyyy-MM-dd E a HH:mm:ss");
String str=bf.format(date);
map.put("date", str);
String content= VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "email.vm", "UTF-8", map);
mMessageHelper.setText(content,true);//通过文件路径获取文件名字
String filename =StringUtil.getFileName(location);//定义要发送的资源位置
File file = newFile(location);
FileSystemResource resource= newFileSystemResource(file);
mMessageHelper.addAttachment(filename, resource);//在邮件中添加一个附件//mMessageHelper.addAttachment("JavaApiRename.txt", resource2);//
//在邮件中添加一个附件
javaMailSender.send(mMessage);//发送邮件
} catch(MessagingException e) {
e.printStackTrace();
log.debug("邮件发送错误:" +e);
}catch(IOException e) {
e.printStackTrace();
log.debug("邮件发送文件错误:" +e);
}return true;
}
}