freemarker+javax mai+多个收件人 springboot

这是一个关于邮件发送的小demo,利用freemarker设置邮件模版与内容,并运用javax mail 进行发送邮件给多个收件人。

  1. 模版。 在resources下面创建一个templates文件夹,并写一个.ftl 结尾的文件作为模版,也可以为.html
<div >

    <table>
        <tr>
            <td>名称:<span>${(name)!""}</span></td>
        </tr>
        <tr>
            <td>日期:<span>${(date)!""}</span></td>
        </tr>
        <tr>
            <td>总人数:<span>${(total)!""}</span>人</td>
        </tr>
        <tr>
            <td>出席人数:<span>${(present)!""}</span>人</td>
        </tr>
        <tr>
            <td>请假人数: <span>${(leave)!""} </span>人</td>
        </tr>
    </table>
    <h4>请立登录xxxx查看详情。</h4>
</div>

<style>
    body{font-size: 14px}
    span{font-weight: bold}
</style>
  1. 邮件内容的实体类
public class Person {
    private String name;
    private String date;
    private Integer total;
    private Integer present;
    private Integer leave;

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getDate() { return date; }
    public void setDate(String date) { this.date = date; }
    public Integer getTotal() { return total; }
    public void setTotal(Integer total) { this.total = total; }
    public Integer getPresent() { return present; }
    public void setPresent(Integer present) { this.present = present; }
    public Integer getLeave() { return leave; }
    public void setLeave(Integer leave) { this.leave = leave; }
}
  1. 读取模版,并替换占位
public class test {
    public static String getContent(){
        Configuration  cfg = new Configuration(Configuration.VERSION_2_3_29);
        TemplateLoader templateLoader =null;
        templateLoader = new ClassTemplateLoader(test.class,"/templates");
        String path = "message.ftl";
        cfg.setTemplateLoader(templateLoader);
        Writer out = new StringWriter();
        Person data = new Person();
        data.setName("xxx会议");
        data.setDate("2020-01-01");
        data.setPresent(50);
        data.setLeave(5);
        data.setTotal(55);
        try {
            Template template=cfg.getTemplate(path,"UTF-8");
            template.process(data, out);
            String string = out.toString();
            out.close();
            System.out.println(string);
            return string;

        } catch (IOException | TemplateException e) {
            e.printStackTrace();
        }
        return null;
    }
}
  1. 发送邮件 (这里需要根据不同的邮箱获取相关的发件人信息才能发送,可登录邮箱进行设置)
public class SendMail {

    public SendMail(){
        //做链接前的准备工作  也就是参数初始化
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host","smtp.126.com");//发送邮箱服务器
        properties.setProperty("mail.smtp.port","465");//发送端口
        properties.setProperty("mail.smtp.auth","true");//是否开启权限控制
        properties.setProperty("mail.debug","true");//true 打印信息到控制台
        properties.setProperty("mail.transport","smtp");//发送的协议是简单的邮件传输协议
        properties.setProperty("mail.smtp.ssl.enable","true");
        //建立两点之间的链接
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("发件人邮箱","发件人邮箱密码");
            }
        });
        //创建邮件对象
        Message message = new MimeMessage(session);

        


        
        try {
        //设置发件人
            message.setFrom(new InternetAddress("发件人的邮箱"));


       //设置收件人
      // 单个收件人           
 message.setRecipient(Message.RecipientType.TO,new InternetAddress("450455108@qq.com"));//收件人

      // 多个收件人  (例如,收件人是用 ‘;’ 隔开的字符串)
           String receiver="xxx@126.com;450455108@qq.com";
          String[] split = receiver.split(";");
            InternetAddress[] address = new InternetAddress[split.length];
            for (int i = 0; i < split.length; i++) {
                address[i] = new InternetAddress(split[i]);
            }
            message.setRecipients(Message.RecipientType.TO, address);

      // 也可以设置 CC 和 BCC
     //   message.setRecipients(Message.RecipientType.BCC, address);
     //   message.setRecipients(Message.RecipientType.CC, address);

            //设置主题
            message.setSubject("subject");
            //设置邮件正文  邮件发送的类型
            test test = new test();
            String content = test.getContent();
            message.setContent(content,"text/html;charset=UTF-8");
            //发送一封邮件
            Transport transport = session.getTransport();
            transport.connect("发送人的邮箱","发送人的邮箱密码");
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }finally {
        }
    }
    public static void main(String[] args) {
        SendMail SendMail = new SendMail();
    }
}
  1. 这时可以发个邮件测试了
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值