2021-01-25

一、引入依赖

 <!-- mail -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

二、配置邮箱的参数

spring: 
 mail:
    # 163
    host: smtp.163.com
    port:
    username: 你的邮箱
    password: 邮箱获取到的16位字符串长度的授权码
    protocol: smtp
    default-encoding: UTF-8
    properties:
      mail.smtp.auth: true
      mail.smtp.starttls.enable: true
      mail.smtp.starttls.required: true
      mail.smtp.socketFactory.port: 465
      mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
      mail.smtp.socketFactory.fallback: false

三、写模板和发送内容(template.html)

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>邮件</title>
</head>
<body>
<div th:text="${subject}"></div>
<div>书籍清单
    <table border="1">
        <tr>
            <td>图书名称</td>
            <td>图书作者</td>
            <td>售卖本数</td>
        </tr>
        <tr th:each="book:${books}">
            <td th:text="${book.name}"></td>
            <td th:text="${book.coder}"></td>
            <td th:text="${book.count}"></td>
        </tr>
    </table>
</div>
</body>
</html>

-- SendEmailController

package com.wangguo.mybatisgen.controller;

import com.wangguo.mybatisgen.service.MailService;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * @Author wangguo
 * @Date 2021/1/25
 */
@RequestMapping("/email")
@Slf4j
@RestController
public class SendEmailController {

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Book {

        private String name;
        private String coder;
        private int count;
    }

    @Autowired
    private MailService mailService;

    @Autowired
    private TemplateEngine templateEngine;

    @GetMapping("/send")
    public void sendEmail(){
        Context context = new Context();
        context.setVariable("subject", "古典文化书籍");
        List<Book> books = new ArrayList<>();
        books.add(new Book("《西游记》",  "吴承恩", 100));
        books.add(new Book("《三国演义》",  "罗贯中", 100));
        books.add(new Book("《水浒传》",  "施耐庵", 1000));
        context.setVariable("books", books);
        String template = "template.html";//模板名称,位置 默认在resource/templates/xxx.html
        String to = "wangguo@tobosoft.com.cn";
        mailService.send(to, "模板邮件", UUID.randomUUID().toString().toUpperCase(),context,template);
    }

}

-- MailService

package com.wangguo.mybatisgen.service;

import org.thymeleaf.context.Context;

public interface MailService {

    public void send(String to, String subject, String text, Context context, String template);
}

-- MailServiceImpl

package com.wangguo.mybatisgen.service.impl;

import com.wangguo.mybatisgen.service.MailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.*;
import javax.mail.internet.MimeMessage;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;


@Service
@Slf4j
public class MailServiceImpl implements MailService {

    @Autowired
    private JavaMailSender mailSender;

    /**
     * 用来发送模版邮件
     */
    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private TemplateEngine templateEngine;


    @Override
    public void send(String to, String subject, String text, Context context,String template) {

            String from = "xxxxxx.com";//你邮箱地址
            String emailContent = templateEngine.process(template, context);
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = null;
            try {
                helper = new MimeMessageHelper(message, true);
                helper.setFrom(from);
                helper.setTo(to);
                helper.setSubject(subject);
                helper.setText(emailContent, true);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
            mailSender.send(message);
        }
}

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值