springboot JavaMailSender发送带html格式的邮件和普通文本邮件

导入依赖

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

yml配置:

spring:
    mail:
    host: smtp.qq.com
    username: ********@qq.com
    password: **********
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
    port: 587

方法

@RestController
public class UserController{
    @Autowired
    private UserRepositories userRepositories;
    @Autowired
    private JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    private String from;

    /**
     *@Author: ZongMao on 2020/4/2 20:11
     *发送简单文本邮件
     *@return
     */
    public void sendSimpleMail(String mailTo, String mailHead, String mailContent) throws Exception {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(mailTo);
        message.setSubject(mailHead);
        message.setText(mailContent);
        javaMailSender.send(message);
    }

    /**
     *@Author: ZongMao on 2020/4/2 20:11
     *发送html文本邮件
     *@return
     */
    public void sendHtmlMail(String mailTo,String mailHead,String mailContent) throws Exception{
        MimeMessage mimeMailMessage = this.javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMailMessage,true,"utf-8");
            messageHelper.setFrom(from);
            messageHelper.setTo(mailTo);
            messageHelper.setSubject(mailHead);
            messageHelper.setText(mailContent,true);
           javaMailSender.send(mimeMailMessage);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    /**
     * @return
     * @Author: ZongMao on 2020/2/18 18:48
     * 发送注册验证码
     */
    @CrossOrigin(allowCredentials = "true", allowedHeaders = "*")
    @PostMapping("/sendVCode")
    public String sendVCode(String email, HttpSession session, VCode oldCode) {
//        随机生成6位数的纯数字验证码
        String code = new Random().nextInt(900000) + 100000 + "";
        if (userRepositories.findByEmail(email) != null) {
            return "email";
        } else {
//            在session中存入验证码和有效期
//            定义一个vCode存放 VCode(验证码), ETime(过期时间);
//            把上面的这个vCode保存到session中;  session.setAttribute("registerVCode", vCode);
//            从session中取出这个vCode,将vCode中的get属性,和用户输入的验证码提交的时间进行相比,如果小于expiredDate(过期时间),则在有效时间之类,进一步对用户输入的验证码进行比较。;
            oldCode.setVCode(code);
            oldCode.setEmail(email);
            oldCode.setETime(new Date().getTime());
            session.setAttribute("registerVCode", oldCode);
        }
        try {
            sendSimpleMail(email, "浙校园注册验证码", "[浙校园]" + "你的注册码为:  " + code + "   ,有效期2分钟,如果非本本人操作,请忽视");
        } catch (Exception e) {
            return "发送失败";
        }
        return "发送成功";
    }


    /**
     * @return
     * @Author: ZongMao on 2020/2/20 15:20
     * 随机生成字符串方法
     */
    //length用户要求产生字符串的长度
    public String getRandomString(int length) {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }

    @CrossOrigin(allowCredentials = "true", allowedHeaders = "*")
    @PostMapping("/sendChangePdLink")
    public String sendChangePdLink(String email,String urlHost) {
        String changePdLink = getRandomString(20);
        if (userRepositories.findByEmail(email) == null) {
            return "email";
        } else {
            userRepositories.setChangPdLink(email, changePdLink);
        }
        try {
            String link ="http://"+urlHost+"/resetPd?email="+email+"&changePwLink=" + changePdLink;
//            sendSimpleMail(email, "浙校园修改密码", "[浙校园]" + "您正在申请修改密码,请复制此链接到浏览器访问进行修改:" + link + "此链接有效期为一次,请勿泄露给他人造成隐私和财产安全!如果非本本人操作,请忽视!");
            sendHtmlMail(email,"浙校园修改密码","[浙校园] 您正在申请修改密码,请点击此链接访问进行修改:"+"<a href='"+link+"'>修改密码</a>"+"此链接有效期为一次,请勿泄露给他人造成隐私和财产安全!如果非本本人操作,请忽视!");
        } catch (Exception e) {
            return "发送失败";
        }
        return "发送成功";
    }
}

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
发送样式的邮件,可以使用SpringJavaMailSender接口和Thymeleaf模板引擎来实现。 首先需要在pom.xml文件中添加以下依赖: ``` <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> ``` 然后在application.properties文件中添加邮件配置信息,例如: ``` spring.mail.host=smtp.qq.com spring.mail.username=your_email@qq.com spring.mail.password=your_email_password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.properties.mail.smtp.ssl.trust=smtp.qq.com ``` 接下来创建一个邮件发送服务类MailService,其中sendHtmlMail方法用于发送HTML格式邮件: ``` @Service public class MailService { @Autowired private JavaMailSender mailSender; @Autowired private TemplateEngine templateEngine; public void sendHtmlMail(String to, String subject, String content) throws Exception { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom("your_email@qq.com"); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); mailSender.send(message); } public void sendTemplateMail(String to, String subject, Map<String, Object> params, String templateName) throws Exception { Context context = new Context(); context.setVariables(params); String content = templateEngine.process(templateName, context); sendHtmlMail(to, subject, content); } } ``` 其中sendTemplateMail方法用于使用Thymeleaf模板引擎来生成邮件内容。 最后创建一个Thymeleaf模板,例如: ``` <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>邮件标题</title> </head> <body> <h1>邮件内容</h1> <p th:text="${content}"></p> </body> </html> ``` 可以看到,Thymeleaf模板中可以使用HTML标签和Thymeleaf的表达式语言来构造邮件内容。在Java代码中,需要使用sendTemplateMail方法来发送邮件,例如: ``` Map<String, Object> params = new HashMap<>(); params.put("content", "<b>这是一封样式的邮件</b>"); mailService.sendTemplateMail("to_email@example.com", "邮件标题", params, "mail_template"); ``` 这样就可以发送样式的邮件了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值