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>

 二、邮件发送控制器

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,测试结果如下:



 

猜你喜欢

转载自xieke90.iteye.com/blog/2428892