Spring整合freemarker发送邮件mail, 附件
http://blog.csdn.net/zdp072/article/details/32745335
发送实现类, 详细看原文
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
Java代码 public class EmailServiceImpl implements EmailService { private JavaMailSender mailSender; private FreeMarkerConfigurer freeMarkerConfigurer; private static final String ENCODING = "utf-8"; public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) { this.freeMarkerConfigurer = freeMarkerConfigurer; } /** * 发送带附件的html格式邮件 */ public void sendEmail(User user) { MimeMessage msg = null; try { msg = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(msg, true, ENCODING); helper.setFrom("service@estore.com"); helper.setTo("zhangsan@estore.com"); helper.setSubject(MimeUtility.encodeText("estore注册成功提示邮件", ENCODING, "B")); helper.setText(getMailText(user), true); // true表示text的内容为html // 添加内嵌文件,第1个参数为cid标识这个文件,第2个参数为资源 helper.addInline("welcomePic", new File("d:/welcome.gif")); // 附件内容 // 这里的方法调用和插入图片是不同的,解决附件名称的中文问题 File file = new File("d:/欢迎注册.docx"); helper.addAttachment(MimeUtility.encodeWord(file.getName()), file); } catch (Exception e) { throw new RuntimeException("error happens", e); } mailSender.send(msg); System.out.println("邮件发送成功..."); } /** * 通过模板构造邮件内容,参数content将替换模板文件中的${content}标签。 */ private String getMailText(User user) throws Exception { // 通过指定模板名获取FreeMarker模板实例 Template template = freeMarkerConfigurer.getConfiguration().getTemplate("registe.html"); // FreeMarker通过Map传递动态数据 Map<String, String> map = new HashMap<String, String>(); map.put("username", user.getUsername()); // 注意动态数据的key和模板标签中指定的属性相匹配 map.put("password", user.getPassword()); // 解析模板并替换动态数据,最终content将替换模板文件中的${content}标签。 String htmlText = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); return htmlText; } } |