相信使用过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,测试结果如下:
<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