用freemaker发送带有附件的邮件
service层
public void sendMessageMail(Object params, String title, String templateName) {
try {
MimeMessage mimeMessage=mailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper( mimeMessage, true );
helper.setFrom( form );
//在此配置收件人邮箱
helper.setTo( InternetAddress.parse( "配置收件人邮箱@qq.com" ) );
helper.setSubject( "【" + title + "-" + LocalDate.now() + " " + LocalTime.now().withNano( 0 ) + "】" );//邮件标题
//添加附件 这个地方是读取根据每天日期自动生成的excel
Date date=new Date();
String dataForm=new SimpleDateFormat( "yyyy-MM-dd" ).format( date );
FileSystemResource file=new FileSystemResource( new File( uploadPath + "workday/" + "Automationdaily/" + dataForm + "/XXX.xlsx" ) );
helper.addAttachment( "测试.xlsx", file );
//我附件上传服务器的位置
String ImgPath="http://ip:8084/files/workday/img/";
//利用freemaker
Map<String, Object> model=new HashMap<>();
model.put( "seturl", ImgPath + dataForm + "/excel01.jpg" );
//model.addAttribute( "seturl",ImgPath + dataForm + "/excel01.jpg");
model.put( "seturl1", ImgPath + dataForm + "/excel02.jpg" );
//连接用户统计
model.put( "seturl2", ImgPath + dataForm + "/excel03.jpg" );
//分时上下行
model.put( "seturl3", ImgPath + dataForm + "/excel04.jpg" );
Template template=configurer.getConfiguration().getTemplate( "runLog.html" );
String text=FreeMarkerTemplateUtils.processTemplateIntoString( template, model );
helper.setText( text, true );
mailSender.send( mimeMessage );
} catch (MessagingException e) {
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (TemplateNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
控制层
因为我的方法是一个自动发送的可视化web页面继承了Job类
@Component
public class MailJobTask implements Job {
@Autowired
private MailService mailService;
//配置文件上传服务器位置
@Value( "${develop.uploadPath}")
private String uploadPath;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("进入到发送附件");
mailService.sendMessageMail("message", "发送标题", "emailMessage.html");//模板页面
}
}
可以根据需求在进行修改