java mail 通过 freemarker 发送邮件

来源:互联网 发布:老挝文字翻译软件 编辑:程序博客网 时间:2024/05/13 21:24

java mail 通过 freemarker 发送邮件

  1. 理解 java mail 核心类:
    1). MimeMessage 对象就是一封邮件。
    2). Session 定义系统属性信息。

  2. 具体代码如下:
    1). controller 层代码如下:

package com.tarena.mail.controller;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.tarena.mail.service.SendEmail;@RequestMapping("/email")@Controllerpublic class MailController {    private Logger logger = Logger.getLogger(MailController.class);    @Autowired    private SendEmail sendEmail;    @RequestMapping("/sendEmail")    public void sendEmail(){        logger.debug("enter sendEamil method...");        sendEmail.sendMail();        logger.debug("exit sendEmail method...");    }}

2). service 层代码如下:

package com.tarena.mail.service;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.Properties;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.stereotype.Service;import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import com.tarena.freemarker.dto.User;import com.tarena.mail.config.ConfigMessage;import com.tarena.mail.controller.MailController;import com.tarena.mail.dto.Mail_authenticator;import freemarker.template.Template;import freemarker.template.TemplateException;@Servicepublic class SendEmail {    private Logger logger = Logger.getLogger(MailController.class);    @Autowired    private FreeMarkerConfigurer freemarker;    public void sendMail() {        // 发件人地址        String from = "zhaoxiaoyu@yundaex.com";        // 收件人地址        String to = "787029866@qq.com";        // 设定系统属性        Properties properties = System.getProperties();        properties.setProperty("mail.smtp.host", ConfigMessage.getProperty("mail.smtp.host"));        properties.put("mail.smtp.port", ConfigMessage.getProperty("mail.smtp.port"));        properties.put("mail.smtp.auth", ConfigMessage.getProperty("mail.smtp.auth"));        // 获取网络连接 授权        Mail_authenticator auth = new Mail_authenticator("zhaoxiaoyu@yundaex.com", "Yd123456");        // 获取 mail session 对象        Session session = Session.getInstance(properties, auth);        // 创建 消息 对象        MimeMessage message = new MimeMessage(session);        try {            // 创建 MimeMessageHelper 对象            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true, "utf-8");            // 设置发件人地址            mimeMessageHelper.setFrom(new InternetAddress(from));            // 设置收件人地址            mimeMessageHelper.setTo(new InternetAddress(to));            // 设置主题            mimeMessageHelper.setSubject("Hello world");            // message.setText("This is my first sending email by java mail.");            // 获取模版对象            Template template = freemarker.getConfiguration().getTemplate("user.ftl");            // 准备的 model data            Map<String, User> map = new HashMap<String, User>();            map.put("user", new User("Hellen", 20));            // 解析 模版和 数据            String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);            // file 本地路径下的文件            File file = new File("G:/chrome download/学生.xls");            // 添加附件            mimeMessageHelper.addAttachment("学生.xls", file);            // 添加内嵌图片            mimeMessageHelper.addInline("picture", new File("E:/图片/美图图库/baby.jpg"));            // 设置 消息内容            mimeMessageHelper.setText(content, true);            // 发送消息            Transport.send(message);            System.out.println("send email successfully...");        } catch (AddressException e) {            e.printStackTrace();            logger.error(e.getMessage());        } catch (MessagingException e) {            e.printStackTrace();            logger.error(e.getMessage());        } catch (IOException e) {            e.printStackTrace();            logger.error(e.getMessage());        } catch (TemplateException e) {            e.printStackTrace();            logger.error(e.getMessage());        }    }}
  1. mail_authenticator dto 代码如下:
package com.tarena.mail.dto;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class Mail_authenticator extends Authenticator{    private String userName;    private String password;    public Mail_authenticator(String userName, String password) {        super();        this.userName = userName;        this.password = password;    }    public Mail_authenticator() {        super();    }    protected PasswordAuthentication getPasswordAuthentication() {        return new PasswordAuthentication(userName, password) ;    }}
  1. spring 配置文件如下:
<!-- 配置 freemarker 模版加载路径 --><bean    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">    <property name="templateLoaderPath" value="ui/template" />    <property name="defaultEncoding" value="UTF-8" /></bean><!-- freemarker视图解析器 --><bean    class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">    <property name="suffix" value=".ftl" />    <property name="contentType" value="text/html;charset=UTF-8" />    <!-- 此变量值为pageContext.request, 页面使用方法:rc.contextPath -->    <property name="requestContextAttribute" value="rc" />    <property name="order" value = "1" /></bean>

5). user.ftl 模版文件如下:

<html><head></head><body>    <table border="2 red solid">        <tr>            <td>username</td>            <td>age</td>        </tr>        <tr>            <td>${user.userName}</td>            <td>${user.age}</td>        </tr>    </table>    <div>        <img src="cid:picture"/>    </div></body></html>
0 0
原创粉丝点击