接收邮件_Spring boot学习(九)Spring boot配置邮件发送

本文介绍了在Spring Boot中配置和使用邮件发送功能,包括添加依赖、配置邮件参数、开启POP3/SMTP服务以及获取授权码。详细讲解了如何发送简单文本邮件、HTML邮件和带有附件的邮件,提供了接口定义和实现类的框架代码。
摘要由CSDN通过智能技术生成

前言

邮件发送这一功能在实际的项目中使用的是非常普遍的,用户忘记账户忘记密码等很多操作都是通过邮件的方式来交互,因此邮件发送在web开发中是必不可少一个功能模块,本文就主要介绍如何在spring boot中发送不同类型的邮件。

Spring boot中配置步骤

Spring本身提供了很好用的org.springframework.mail.javamail.JavaMailSender接口来实现邮件发送功能,Spring boot中也为此提供了自动化配置,所以我们使用起来非常方便。

添加依赖

首先在pom.xml文件中添加如下依赖:

org.springframework.boot

spring-boot-starter-mail

修改配置文件

添加依赖之后就需要在项目配置文件application.properties中配置发送邮件相关的参数,具体如下:

spring.mail.host=smtp.163.com

spring.mail.username=xxx

spring.mail.password=xxx

spring.mail.default-encoding=UTF-8

重要的参数就这些,其它的使用默认的即可,以下为解释:

  • spring.mail.host:邮箱服务器地址,这个根据自己使用什么邮箱有区别,比如:
  1. smtp.163.com:163邮箱
  2. smtp.126.com:126邮箱
  3. smtp.qq.com:qq邮箱
  • spring.mail.username:邮箱登陆用户名。
  • spring.mail.password:第三方登陆授权码(下面会具体介绍该授权码的获取方式)。
  • spring.mail.default-encoding:编码方式

POP3/SMTP服务

上面提到了授权码的概念,首先要明确一个概念就是授权码跟我们直接登陆邮箱的密码不是一样的,授权码可以理解为第三方客户端登陆邮箱的密码,要想获取授权码需要我们去自己所用邮箱的官网设置开启POP3/SMTP以及IMAP/SMTP服务,我这里就以自己使用的163账号为例介绍打开该服务以及获取授权码的步骤,如图:

1a88224cfc065c206c4672b93cff07f6.png

登陆163邮箱官网,按照图示步骤进行操作,在选择了服务之后会给你发送验证码,输入验证码之后就会让你自己设置授权码,这里的授权码就是上边配置文件中spring.mail.password需要填写的值。

封装邮件工具类

对邮件的操作最好是封装一个类以便代码重用以及维护,我这里封装成一个service层。

定义接口IMailService.interface:

package com.web.springbootmail.service;

/**

* @author Promise

* @createTime 2019年3月30日 下午3:14:14

* @description

*/

public interface IMailService {

/**

* 简单文本邮件

* @param toUser 邮件接收者

*/

void simpleMil(String toUser)throws Exception;

/**

* html邮件

* @param toUser 邮件接收者

*/

void htmlMail(String toUser) throws Exception;

/**

* 带附件邮件

* @param toUser 邮件接收者

*/

void attachmentMail(String toUser)throws Exception;

/**

* 带图片邮件

* @param toUser 邮件接收者

*/

void imgMail(String toUser)throws Exception;

/**

* 模板邮件

* @param toUser 邮件接收者

*/

void TemplateMail(String toUser)throws Exception;

}

实现类MailServiceimpl.java:

package com.web.springbootmail.service.impl;

import java.io.File;

import javax.mail.MessagingException;

import javax.mail.internet.MimeMessage;

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.stereotype.Service;

import org.thymeleaf.TemplateEngine;

import org.thymeleaf.context.Context;

import com.web.springbootmail.service.IMailService;

/**

* @author Promise

* @createTime 2019年3月30日 下午3:14:37

* @description 邮件发送服务类

*/

@Service("mailService")

public class MailServiceImpl implements IMailService{

@Autowired

private JavaMailSender jms;

@Autowired

private TemplateEngine templateEngine;

@Value("${spring.mail.username}")

private String from;

@Override

public void simpleMil(String toUser) {

}

@Override

public void htmlMail(String toUser) {

// TODO Auto-generated method stub

}

@Override

public void attachmentMail(String toUser) {

// TODO Auto-generated method stub

}

@Override

public void imgMail(String toUser) {

// TODO Auto-generated method stub

}

@Override

public void TemplateMail(String toUser) {

// TODO Auto-generated method stub

}

}

这里只给出了框架,具体实现下面依次介绍,上面还注入了三个变量:

  • jms:邮件发送接口
  • templateEngine:发送模板邮件时解析模板
  • from:读取配置文件中配置的邮件发送者的账号

下面介绍每一种邮件的具体实现

简单文本邮件

这一类邮件最简单,使用SimpleMailMessage对象,代码如下:

@Override

public void simpleMil(String toUser) {

// TODO Auto-generated method stub

//初始化简单邮件对象

SimpleMailMessage message = new SimpleMailMessage();

//邮件发送者

message.setFrom(from);

//邮件接收者

message.setTo(toUser);

//邮件标题

message.setSubject("简单邮件");

//邮件内容

message.setText("简单内容");

//发送邮件

jms.send(message);

}

html邮件

这一类邮件使用的是MimeMessage对象,可丰富页面样式,代码如下:

@Override

public void htmlMail(String toUser) throws MessagingException {

// TODO Auto-generated method stub

MimeMessage message = jms.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setFrom(from);

helper.setTo(toUser);

helper.setSubject("html格式邮件");

//内容为html格式

String content = "

这是一封html格式的文件

这是一封html格式的文件

";

//true表示以html格式发送邮件

helper.setText(content, true);

jms.send(message);

}

带附件的邮件

这一类邮件多了添加附件的过程,也使用MimeMessage,代码如下:

@Override

public void attachmentMail(String toUser) throws MessagingException {

// TODO Auto-generated method stub

MimeMessage message = jms.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setFrom(from);

helper.setTo(toUser);

helper.setSubject("带附件邮件");

//加载绝对路径资源

FileSystemResource fs = new FileSystemResource(new File("D:DownLoadfile阿里巴巴Java开发手册v1.2.0.pdf"));

helper.setText("这是一封带附件的邮件!");

//添加附件资源

helper.addAttachment("阿里巴巴Java开发手册v1.2.0.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值