5、springboot 簡單優雅是實現郵件服務

前言

spring boot 的項目放下小半個月沒有更新了,終於閒下來能夠開心的接着寫啦。以前咱們配置好mybatis 多數據源的,接下來咱們須要作一個郵件服務。好比你註冊的時候,須要輸入驗證碼來校驗。這個驗證碼就能夠經過郵件來發送。固然如今驗證碼大部分都是經過短信,單郵件有時候也是必不可少的。因此咱們的spring架手架仍是將郵件服務也搭建起來。下一篇將短信服務也整合進來。好了,言歸正傳。搭建郵件服務沒有接觸可能會以爲很麻煩或者單機環境測試環境都實現不了。以爲沒有郵件服務。其實咱們我的使用的話,是能夠作到的。qq郵箱,網易郵箱均可以的。我這裏使用的是QQ郵箱。網上有不少相關的教程。html

郵箱服務器準備

登陸QQ郵箱,點擊設置 -->帳戶 能夠找到 下圖這個。java

file

須要開通 POP3/SMTP服務。開通這個後,會生成一個祕鑰。這個祕鑰咱們待會會在項目中用到。拿小本本記下來哈哈。linux

添加依賴和配置

郵箱準備好了,咱們就開始咱們的項目吧。首先在pom.xml 文件中添加依賴git

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>複製代碼

而後在application.proteries 文件中添加配置,改爲本身的郵箱。password 就是剛剛生成的那個祕鑰。QQ郵箱的服務器地址是:smtp.qq.com 。網易的你們能夠搜一下。程序員

spring.mail.host=smtp.qq.com
spring.mail.username=1186154608@qq.com
spring.mail.password=abcdefgqazqaz
spring.mail.default-encoding=UTF-8

mail.from=1186154608@qq.com複製代碼

file

Service 層

配置信息都好了以後,咱們就能夠來使用啦。這裏咱們暫時沒有涉及到數據庫,就直接寫Service層和controller 層。在service 包下建立一個MailService 和MailServiceImplgithub

file

MailServiceImpl 中代碼spring

@Service
@Slf4j
public class MailServiceImpl implements MailService{
    @Autowired
    private JavaMailSender mailSender;
    @Value("${mail.from}")
    private String mailFrom;
    @Override
    public void sendSimpleMail(String mailTo) {
        SimpleMailMessage message=new SimpleMailMessage();
        message.setFrom(mailFrom);
        message.setTo(mailTo);
        message.setSubject("simple mail");
        message.setText("hello world");
        mailSender.send(message);
        log.info("郵件已經發送");
    }

}複製代碼

這裏咱們就先簡單的測試一下看看郵件能不能發送。mailFrom 是發件人,mailTo 是收件人。message.setSubject()設置郵件主題。message.setText()設置郵件內容。mailSender.send(message)是發送短信。數據庫

controller層

咱們建立一個MailController類。代碼以下:springboot

@RestController
@RequestMapping("/mail")
public class MailController {
    @Autowired
    private MailService mailService;

    @RequestMapping(value = "/send",method = RequestMethod.GET)
    public String sendMail(@RequestParam(value = "userName")String userName){
        mailService.sendSimpleMail(userName);
        return "success";
    }
}複製代碼

能夠看到就一個發送的接口。很簡單,參數傳過來接收人的郵箱就行了。服務器

測試

到此爲止,咱們郵件服務的demo 就已經搭建好了。咱們接下來測試測試一下。咱們啓動項目。而後調接口

http://localhost:9090/zlflovemm/mail/send?userName=1303123974@qq.com複製代碼

file

提示已經發送成功啦,咱們進郵箱看下咱們發送狀況。能夠看到是發送成功了。因此說明咱們的郵件服務搭建成功了。

file

因此如今看來,springboot 集成郵件服務是很是簡單的,配置郵件服務器,就能夠直接使用啦。

發送附件

有時候咱們發送郵件不只僅發送內容,還須要發送附件,那怎麼實現呢。其實也很簡單。那些配置仍是不變。咱們在service 層。寫一個sendMail方法。以下

@Override
    public void sendMail(String mailTo) {
        MimeMessage message=mailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true);
            helper.setFrom(mailFrom);
            helper.setTo(mailTo);
            helper.setSubject("simple mail");
            helper.setText("hello world", true);
            FileSystemResource file = new FileSystemResource(new File("E:\\myself\\test.xls"));
            String fileName = file.getFilename();
            helper.addAttachment(fileName, file);
            mailSender.send(message);
            log.info("郵件已經發送");
        } catch (MessagingException e) {
            log.error("{}",e);
        }
    }複製代碼

能夠看到和咱們開始測試的時候,有一點不一樣。這裏先

MimeMessage message=mailSender.createMimeMessage();複製代碼

MimeMessage 比 SimpleMailMessage 功能更強大,能夠發送附件,也能夠將內容轉成html 格式發送。因此通常實際使用的時候都使用MimeMessage。另外發送附件,還須要藉助MimeMessageHelper 。MimeMessageHelper是輔助MimeMessage的。

helper.setFrom(mailFrom);
helper.setTo(mailTo);
helper.setSubject("simple mail");
helper.setText("hello world", true);複製代碼

這些和前面是同樣的,發件人收件人,主題,內容。helper.addAttachment()是添加附件的。

好了,接下咱們測試一下。能夠看到發送的郵件是有附件的。證實沒問題。

file

番外

好了,就說這麼多啦,今天項目的代碼也同步到github 上啦。github地址:https://github.com/QuellanAn/zlflovemm

後續加油♡

歡迎你們關注我的公衆號 "程序員愛酸奶"

分享各類學習資料,包含java,linux,大數據等。資料包含視頻文檔以及源碼,同時分享本人及投遞的優質技術博文。

若是你們喜歡記得關注和分享喲❤file

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索