Spring Boot发送邮件详解

阅读更多

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

一、引入依赖

 


	org.springframework.boot
	spring-boot-starter-web


        org.springframework.boot
        spring-boot-starter-mail

 

二、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
##邮箱用户名
[email protected]
##邮箱密码(注意:QQ邮箱应该使用授权码)
spring.mail.password=****************
##编码格式
spring.mail.default-encoding=UTF-8

##发送邮件地址
[email protected]
##接收邮件地址
[email protected]

 

三、邮件发送控制器

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 = "

hello world ! --->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 = "带有图片的邮件:"; 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,测试结果如下:


Spring Boot发送邮件详解_第1张图片
 <2>、访问http://localhost:8888/sendHtmlMail,测试结果如下:


Spring Boot发送邮件详解_第2张图片
 <3>、访问http://localhost:8888/sendFilesMail,测试结果如下:


Spring Boot发送邮件详解_第3张图片
  <4>、访问http://localhost:8888/sendInlineResourceMail,测试结果如下:


Spring Boot发送邮件详解_第4张图片
 

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

 

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

 

  • Spring Boot发送邮件详解_第5张图片
  • 大小: 8.6 KB
  • Spring Boot发送邮件详解_第6张图片
  • 大小: 11 KB
  • Spring Boot发送邮件详解_第7张图片
  • 大小: 17 KB
  • Spring Boot发送邮件详解_第8张图片
  • 大小: 71.4 KB
  • 查看图片附件

你可能感兴趣的:(spring,boot,mail,spring,mail)