springboot发送邮件、在邮件中上传附件、发送html格式的邮件

------原文链接------

准备环境

springboot官网中是如下这样描述的:

也就是说,当我们在项目的配置文件中定义了spring.mail.host也即邮件服务器,并且引入了相关jar包时,springboot会自动注入一个JavaMailSenderbean来给我们使用。所以:

pom.xml中加入:

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

application.yml中加入:

spring:
	mail:
		host: smtp.163.com

这步做完之后我们可以写个controller来测试是否存在javaMailSender这个bean

@Controller
@RequestMapping("/test")
public class TestController {
    @Resource
    private JavaMailSender javaMailSender;
    @ResponseBody
    @GetMapping("/mail")
    public String testMail(){
        return javaMailSender==null?"不存在":javaMailSender.toString();
    }

}
发送邮件

上述步骤中我们可以得到javaMailSender这个对象来帮助我们完成邮件的发送。首先,我们需要完善相关的配置

spring:
	mail:
	#163邮件服务器
	host: smtp.163.com
	#使用smtp协议
	protocol: smtp
	#邮箱地址
	username: xxx@163.com
	#邮箱密码
	password: xxx

下面是简单的发送邮件示例:

@Controller
@RequestMapping("/test")
public class TestController {
    @Resource
    private TemplateEngine templateEngine;
    @Resource
    private JavaMailSender javaMailSender;
	
	//简单的发送文字内容
    @ResponseBody
    @GetMapping("/mail1")
    public String testMail1() throws MessagingException {
        MimeMessagePreparator preparator = new MimeMessagePreparator() {
            public void prepare(MimeMessage mimeMessage) throws Exception {
                mimeMessage.setRecipient(Message.RecipientType.TO,
                        new InternetAddress("xxxx@163.com"));
				//此处是发送方的邮件地址,需要和配置文件中的一致
                mimeMessage.setFrom(new InternetAddress("xxxx@163.com"));
                mimeMessage.setText("测试邮件");
                mimeMessage.setSubject("测试测试");
            }
        };
        javaMailSender.send(preparator);

        return "success";
    }
	
	//在邮件中添加附件
    @ResponseBody
    @GetMapping("/mail2")
    public String testMail2() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //true代表需要上传附件
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
        mimeMessageHelper.setSubject("附件测试");
        mimeMessageHelper.setFrom("xxx@163.com");
        mimeMessageHelper.setTo("xxx@163.com");
        mimeMessageHelper.setText("这是附件测试");
        FileSystemResource file = new FileSystemResource(new File("c:/test.rar"));
        mimeMessageHelper.addAttachment("附件测试.rar", file);
        javaMailSender.send(mimeMessage);
        return "success";
    }
	
	//将发送内容渲染到html模板中
    @ResponseBody
    @GetMapping("/mail3")
    public String testMail3() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //true代表需要上传附件
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
        mimeMessageHelper.setSubject("模板测试");
        mimeMessageHelper.setFrom("xxxx@163.com");
        mimeMessageHelper.setTo("xxxx@163.com");
        mimeMessageHelper.setText(generateStrFromTemplate("这是模板测试"),true);
        javaMailSender.send(mimeMessage);
        return "success";
    }
    private String generateStrFromTemplate(String message){
        Context context = new Context();
        context.setVariable("message", message);
		//使用thymeleaf模板引擎渲染内容
		//此处渲染的文件默认以项目的templates文件夹作为根路径
        return templateEngine.process("mail/mailTemplate", context);
    }

}

mailTemplates.html文件如下所示:

<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    h1{
      color: red;
    }
  </style>
</head>
<body>
<h1>[[${message}]]</h1>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值