`

Spring整合freemarker发送邮件mail, 附件

 
阅读更多
http://blog.csdn.net/zdp072/article/details/32745335


发送实现类, 详细看原文
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;  
    }  
}  
分享到:
评论

相关推荐

    spring整合freemarker发送邮件例子

    在"spring整合freemarker发送邮件例子"中,我们将探讨如何利用Spring的JavaMailSender接口与Freemarker模板来实现复杂邮件的发送,包括HTML内嵌图片和附件,同时解决邮件乱码问题。 首先,我们需要在Spring配置文件...

    Spring Boot整合邮件发送并保存历史发送邮箱

    3、Spring Boot 发送邮件(文本格式的邮件、发送HTML格式的邮件、发送带附件 的邮件、发送带静态资源的邮件) 个人觉得Springboot的开发简单的归纳为三步jar包引入,配置,应用。 (一)简单使用 1)JSP的使用...

    E-mail_demo-1.zip

    在Spring Boot中,可以使用JavaMailSender接口来配置SMTP服务器的连接信息,并发送邮件。开发者需要设置SMTP服务器的地址、端口、用户名、密码等信息,然后创建MailMessage对象,填充邮件内容,最后通过...

    java邮件

    - 发送邮件:使用`Transport`类的`send()`方法发送邮件。 2. **SMTP协议与ESMTP** - SMTP(Simple Mail Transfer Protocol)是用于在互联网上传输邮件的标准协议。JavaMail API支持ESMTP(Extended SMTP),提供...

    mailService

    在mailService项目中,`javax.mail`和`javax.mail.internet`这两个包可能是主要使用的,它们包含了如`Session`(邮件会话)、`Message`(邮件对象)、`Transport`(发送邮件)和`MimeMessage`(支持多部分编码的邮件...

Global site tag (gtag.js) - Google Analytics