`

Spring Boot发送邮件详解

阅读更多

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例来讲解如何在Spring Boot中使用JavaMailSender发送邮件。

一、引入依赖

 

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

 

二、application.properties配置

 

##端口号
server.port=8888

##根据自己的情况填写
##邮箱服务器地址
##QQ smtp.qq.com
##sina smtp.sina.cn
##aliyun smtp.aliyun.com
##163 smtp.163.com
spring.mail.host=smtp.qq.com
##邮箱用户名
spring.mail.username=949118693@qq.com
##邮箱密码(注意:QQ邮箱应该使用授权码)
spring.mail.password=****************
##编码格式
spring.mail.default-encoding=UTF-8

##发送邮件地址
mail.fromMail.sender=949118693@qq.com
##接收邮件地址
mail.fromMail.receiver=1415954494@qq.com

 

三、邮件发送控制器

package com.xieke.test.demo;
import java.io.File;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 邮件发送控制器
 * 
 * @author 邪客
 * 
 */
@RestController
public class MailController {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Value("${mail.fromMail.sender}")
	private String sender;// 发送者

    @Value("${mail.fromMail.receiver}")
	private String receiver;// 接受者

    @Autowired
    private JavaMailSender javaMailSender;

	/**
	 * @Description http://localhost:8888/sendMail
	 * @method 发送文本邮件
	 * @return
	 */
    @RequestMapping("/sendMail")
    public String sendMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(sender);
        message.setTo(receiver);
		message.setSubject("邪客发送文本邮件测试");// 标题
		message.setText("世界,你好!--->文本邮件");// 内容
        try {
            javaMailSender.send(message);
			logger.info("文本邮件发送成功!");
			return "success";
        } catch (Exception e) {
			logger.error("文本邮件发送异常!", e);
			return "failure";
        }
    }

	/**
	 * @Description http://localhost:8888/sendHtmlMail
	 * @method 发送html邮件
	 * @return
	 */
    @RequestMapping("/sendHtmlMail")
    public String testHtmlMail() {
		String content = "<html><body><h3>hello world ! --->Html邮件</h3></body></html>";
        MimeMessage message = javaMailSender.createMimeMessage();

        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(receiver);
			helper.setSubject("邪客发送Html邮件测试");
            helper.setText(content, true);

            javaMailSender.send(message);
			logger.info("Html邮件发送成功!");
			return "success";
        } catch (MessagingException e) {
			logger.error("Html邮件发送异常!", e);
			return "failure";
        }
    }

	/**
	 * @Description http://localhost:8888/sendFilesMail
	 * @method 发送附件邮件
	 * @return
	 */
    @RequestMapping("/sendFilesMail")
    public String sendFilesMail() {
		String filePath = "F:\\select_from_user.sql";
        MimeMessage message = javaMailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(receiver);
			helper.setSubject("邪客发送附件邮件测试");
			helper.setText("一封带附件的邮件", true);

            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName, file);

            javaMailSender.send(message);
			logger.info("附件邮件发送成功!");
			return "success";
        } catch (MessagingException e) {
			logger.error("附件邮件发送异常!", e);
			return "failure";
        }
    }

	/**
	 * @Description http://localhost:8888/sendInlineResourceMail
	 * @method 发送图片邮件
	 * @return
	 */
    @RequestMapping("/sendInlineResourceMail")
    public String sendInlineResourceMail() {
		String id = "xieke90";
		// cid:内嵌资源
		String content = "<html><body>带有图片的邮件:<img src=\'cid:" + id + "\'></body></html>";
		String imgPath = "F:\\spring-cloud.png";
        MimeMessage message = javaMailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(receiver);
			helper.setSubject("邪客发送图片邮件测试");
            helper.setText(content, true);

            FileSystemResource res = new FileSystemResource(new File(imgPath));
			helper.addInline(id, res);

            javaMailSender.send(message);
			logger.info("图片邮件发送成功!");
			return "success";
        } catch (MessagingException e) {
			logger.error("图片邮件发送异常!", e);
			return "failure";
        }

    }

}

 

四、分别测试文本、Html、附件、图片邮件发送

<1>、访问http://localhost:8888/sendMail,测试结果如下:



 <2>、访问http://localhost:8888/sendHtmlMail,测试结果如下:



 <3>、访问http://localhost:8888/sendFilesMail,测试结果如下:



  <4>、访问http://localhost:8888/sendInlineResourceMail,测试结果如下:



 

代码已上传至码云:https://gitee.com/xieke90/spring_boot_demo (springboot-mail-demo)

 

转载请注明出处: http://xieke90.iteye.com/blog/2428892

 

  • 大小: 8.6 KB
  • 大小: 11 KB
  • 大小: 17 KB
  • 大小: 71.4 KB
1
0
分享到:
评论

相关推荐

    Spring Boot和Hazelcast使用详解

    主要介绍了Spring Boot和Hazelcast使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Spring Boot使用MongoDB详解

    本文将详细介绍如何在Spring Boot项目中集成MongoDB数据库,包括其原理、使用流程、步骤以及完整的代码示例。通过本文,读者将能够了解Spring Boot与MongoDB的集成方式,掌握在Spring Boot应用程序中操作MongoDB...

    spring boot配置文件参数详解

    spring boot配置文件参数详解,spring boot配置文件参数详解,spring boot配置文件参数详解,spring boot配置文件参数详解,

    Spring Boot详解

    分享我的Spring Boot 笔记文档,本文档从Spring 的演变说起,根据文档一步一步学习,让您全面理解Spring Boot的工作原理,以及使用方法。可当做操作手册使用。 主要讲解内容有: 1、spring 的java配置方式; 2、...

    从零开始学Spring Boot

    1.37 Spring Boot的启动器Starter详解 1.38 Spring Boot集成Redis实现缓存机制 1.39 Spring Boot Cache理论篇 1.40 Spring Boot集成EHCache实现缓存机制 1.41 Spring Boot分布式Session状态保存Redis 1.42 Spring ...

    基于 SpringBoot 2.3.4 版本的入门 Demo 教程

    Spring Boot 配置文件详解 Spring Boot RESTful API 架构 ...Spring Boot Email 邮件服务 Spring Boot Minio 对象存储 Spring Boot Admin 监控 Spring Boot Task 定时任务 Spring Boot Security 安全框架

    2023最新《Spring Boot基础教程》

    Spring Boot 2.x基础教程:配置文件详解 Spring Boot 2.x基础教程:2.4版本前后的多环境配置变化 Spring Boot 2.x基础教程:2.4版本前后的分组配置变化 Spring Boot 2.x基础教程:配置元数据的应用 Spring Boot 2.x...

    Java之Spring Boot详解

     Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简单的来说 Spring ...

    spring boot 防止重复提交实现方法详解

    主要介绍了spring boot 防止重复提交实现方法,结合实例形式详细分析了spring boot 防止重复提交具体配置、实现方法及操作注意事项,需要的朋友可以参考下

    spring boot 全面的样例代码

    - chapter1:[基本项目构建(可作为工程脚手架),引入...由于Spring Cloud偏宏观架构,Spring Boot偏微观细节,内容上越来越多,为了两部分内容不互相干扰,所以迁移Spring Cloud内容到:[SpringCloud-Learning项目]...

    自己spring boot 拦截器

    自己spring boot 拦截器,可以自定义限制跳转路径及自定义不拦截哪些具体路径,具体设置可以看注释,一看就懂,引用哪些包已经包含了,不明白的请浏览,看到后第一时间给您回复

    Spring Boot开发案例详解.pdf

    在当今的互联网应用中,实时性和性能是许多系统设计的关键要素。Redis,作为一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。由于其高性能、高可用性和丰富的数据结构支持,Redis在实时...

    spring boot 实践学习案例,与其它组件整合

    - Spring Boot 业务应用,包括 定时任务、上传文件、发送邮件、Doc文档操作 等。 - springboot-ajax - Spring Boot AJAX 跨域,包括 JSONP、Node.js与SpringBoot集成使用反向代理 等。 - springboot-...

    Spring Boot Mybatis使用详解含示例(值得珍藏)

    MyBatis 是一个优秀的持久层框架...支持事务管理:MyBatis 可以与 Spring 框架集成,利用 Spring 的事务管理功能,确保数据的完整性和一致性。 缓存机制:MyBatis 内置了二级缓存机制,可以在一定程度上提高查询效率。

    Spring Boot Actuator执行器运行原理详解

    主要介绍了Spring Boot Actuator执行器运行原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Spring Boot整合EhCache的步骤详解

    EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。这篇文章主要介绍了Spring Boot整合EhCache的步骤详解,需要的朋友可以参考下

    SpringBoot配置详解

    spring boot application properties配置详解

    Spring Boot in Action英文版

    详解Spring Boot微框架,目前还没有中文版本

Global site tag (gtag.js) - Google Analytics