spring boot 发送邮件功能

邮件发送是一个非常常见的功能,注册时的身份认证、重要通知发送等都会用到邮件发送。Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring 中提供了JavaMailSender用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化,本文将介绍Spring Boot如何实现邮件发送功能。

一、环境配置

1、导入依赖

使用Maven在项目中引入spring-boot-starter-mail依赖


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

2、添加配置信息

引入依赖之后,在application.properties文件中添加以下配置:

# smtp服务器主机地址
spring.mail.host=smtp.xxx.com
# smtp服务器端口号
spring.mail.port=xxx
# 提供发送邮件服务的邮箱账号
[email protected]
# 提供发送邮件服务的邮箱授权码(如:qq,163)/密码(如:Gmail)
spring.mail.password=xxxxxxxxxxx
# 默认的字符集
spring.mail.default-encoding=UTF-8
# 是否开启权限验证
spring.mail.properties.mail.smtp.auth=true
# 是否开启SSL验证
spring.mail.properties.mail.smtp.ssl.enable=true
# 是否开启debug模式
spring.mail.properties.mail.debug=true

备注

  • SMTP(Simple Mail Transfer Protocol)定义了邮件客户端软件与SMTP服务器之间,以及SMTP服务器与SMTP服务器之间的通信规则。
  • 邮箱的授权码需在账户开启POP3/SMTP服务之后由邮件服务商提供。

二、编写服务类

1、MailService接口

package cn.frankfang.service;

import java.io.File;

/**
 * 邮件服务的接口类
 * 
 * @author Frank Fang
 *
 */
public interface MailService {

    /**
     * 发送简单邮件
     * 
     * @param to      收件人
     * @param cc      抄送人
     * @param subject 主题
     * @param content 内容
     */
    void sendSimpleMall(String to, String subject, String content);

    /**
     * 发送带附件的邮件
     * 
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     * @param file    文件
     */
    void sendAttachFileMail(String to, String subject, String content, File file);

    /**
     * 发送HTML格式的邮件
     * 
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     */
    void sendHtmlMail(String to, String subject, String content);
}

2、MailService实现类

package cn.frankfang.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.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import cn.frankfang.service.MailService;

@Service
public class MailServiceImpl implements MailService{

    @Value("${spring.mail.username}")
    private String from;

    @Autowired
    private JavaMailSender mailSender;

    // 发送简单邮件
    @Override
    public void sendSimpleMall(String to, String subject, String content) {
        try {
            SimpleMailMessage message = new SimpleMailMessage();

            message.setFrom(from);
            message.setTo(to);
            message.setCc(from);
            message.setSubject(subject);
            message.setText(content);

            mailSender.send(message);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

    // 发送带附件的邮件
    @Override
    public void sendAttachFileMail(String to, String subject, String content, File file) {      
        try {
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper messageHelper = new MimeMessageHelper(mess

你可能感兴趣的:(spring,boot,java,前端)