SpringBoot 发送邮件功能(包含网易、QQ、Gmail邮箱)

SpringBoot 2.x 集成网易邮箱、QQ邮箱、Gmail邮箱发送邮件

在Spring中提供了非常好用的 JavaMailSender接口实现邮件发送,因此引入依赖和进行编写不同配置即可实现。

所需依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
一:网易邮箱配置

1.网易邮箱客户端授权码

参考官方帮助中心

2.客户端端口配置

可以使用465、994、25

25端口在阿里服务器上默认是禁用的,如需使用需要申请解封

3.详细配置

spring:
  mail:
    # 邮件服务地址
    host: smtp.163.com
    # 端口  465/994/25
    port: 465
    # 编码格式
    default-encoding: utf-8
    # 用户名
    username: xxxxxx@163.com
    # 协议
    protocol: smtp
    # 客户端授权码
    password: xxxxxx
    # 其它参数
    properties:
      mail:
        smtp:
          auth: true
          # 如果是用 SSL 方式,需要配置如下属性
          starttls:
            enable: true
            required: true
        ssl:
          enable: true
        # 显示名称可任意设置
        display:
          sendmail: Souther
          sendname: Spring Boot Test Email

4.特别说明

  • 163邮箱SMTP服务器地址:smtp.163.com,端口号:465或者994
  • 126邮箱SMTP服务器地址:smtp.126.com,端口号:465或者994
  • yeah邮箱SMTP服务器地址:smtp.yeah.net,端口号:465或者994
二:QQ邮箱配置

1.官方配置说明

参考官方帮助中心

2.获取客户端授权码

参考官方帮助中心

3.详细配置

spring:
  mail:
    # 邮件服务地址
    host: smtp.qq.com
    # 端口 465/587
    port: 465
    # 编码格式
    default-encoding: utf-8
    # 用户名
    username: xxxxxx@qq.com
    # 协议
    protocol: smtp
    # 客户端授权码
    password: xxxxxx
    # 其它参数
    properties:
      mail:
        smtp:
          auth: true
          # 如果是用 SSL 方式,需要配置如下属性
          starttls:
            enable: true
            required: true
        ssl:
          enable: true
        # 显示名称可任意设置
        display:
          sendmail: Souther
          sendname: Spring Boot Test Email

4.特别说明

开启SSL时使用587端口时无法连接QQ邮件服务器

三:Gmail邮箱配置

1.客户端设置说明

参考官方Gmail帮助

2.客户端授权码说明

客户端授权码为Gmail账号的密码,必须使用使用SSL

3.详细配置

spring:
  mail:
    # 邮件服务地址
    host: smtp.gmail.com
    # 端口 465  
    port: 465
    # 编码格式
    default-encoding: utf-8
    # 用户名
    username: xxxxxx@gmail.com
    # 协议
    protocol: smtp
    # 客户端授权码(gmail账号的密码)
    password: xxxxxx
    # 其它参数
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
        # 这里必须开启ssl
        ssl:
          enable: true
        # 显示名称可任意设置
        display:
          sendmail: Souther
          sendname: Spring Boot Test Email
四:通过JavaMailSender接口发送邮件
  1. MailSendDto
public class MailSendDto {
    private String to;
    private String subject;
    private String content;

    public String getTo() {
        return to;
    }

    public void setTo(String to) {
        this.to = to;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

2.MailService

/**
 * @description: 邮件服务Service
 * @author: Mr.Tang
 * @create: 2021/1/21 10:06
 **/

public interface MailService {
    /**
     * 发送普通邮件
     *
     * @param dto
     */
    void sendSimpleMailMessge(MailSendDto dto);

    /**
     * 发送普通邮件
     *
     * @param to
     * @param subject
     * @param content
     */
    void sendSimpleMailMessge(String to, String subject, String content);


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

    /**
     * 发送带附件的邮件
     *
     * @param to       收件人
     * @param subject  主题
     * @param content  内容
     * @param filePath 附件路径
     */
    void sendMimeMessge(String to, String subject, String content, String filePath);

    /**
     * 发送带静态文件的邮件
     *
     * @param to       收件人
     * @param subject  主题
     * @param content  内容
     * @param rscIdMap 需要替换的静态文件
     */
    void sendMimeMessge(String to, String subject, String content, Map<String, String> rscIdMap);
}

3.MailServiceImpl

@Service
public class MailServiceImpl implements MailService {
    private static final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);

    @Autowired
    private JavaMailSender mailSender;
    @Autowired
    MallSystemMapper systemMapper;

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

    @Override
    public void sendSimpleMailMessge(MailSendDto dto) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(sender);
        message.setTo(dto.getTo());
        message.setSubject(dto.getSubject());
        message.setText(dto.getContent());
        try {
            mailSender.send(message);
            logger.info("send success.................");
        } catch (Exception e) {
            logger.error("发送简单邮件时发生异常!", e);
        }
    }
  

    @Override
    public void sendSimpleMailMessge(String to, String subject, String content) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(sender);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(content);
        try {
            mailSender.send(message);
            logger.info("send success.................");
        } catch (Exception e) {
            logger.error("发送简单邮件时发生异常!", e);
        }
    }


    @Override
    public void sendMimeMessge(String to, String subject, String content) {
        MimeMessage message = mailSender.createMimeMessage();
        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            mailSender.send(message);
            logger.info("send success.................");
        } catch (MessagingException e) {
            logger.error("发送MimeMessge时发生异常!", e);
        }
    }

    @Override
    public void sendMimeMessge(String to, String subject, String content, String filePath) {
        MimeMessage message = mailSender.createMimeMessage();
        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = file.getFilename();
            helper.addAttachment(fileName, file);
            mailSender.send(message);
            logger.info("send success.................");
        } catch (MessagingException e) {
            logger.error("发送带附件的MimeMessge时发生异常!", e);
        }
    }

    @Override
    public void sendMimeMessge(String to, String subject, String content, Map<String, String> rscIdMap) {
        MimeMessage message = mailSender.createMimeMessage();
        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            for (Map.Entry<String, String> entry : rscIdMap.entrySet()) {
                FileSystemResource file = new FileSystemResource(new File(entry.getValue()));
                helper.addInline(entry.getKey(), file);
            }
            mailSender.send(message);
            logger.info("send success.................");
        } catch (MessagingException e) {
            logger.error("发送带静态文件的MimeMessge时发生异常!", e);
        }
    }
}
五:效果图

image.png

普通邮件

image.png

HTML邮件

image.png

带附件邮件

image.png

带静态文件邮件

image.png

到这就结束了

如有错误欢迎指正。你有更好的解决方案或者建议欢迎一起交流讨论,如有疑问欢迎留言。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要在 Spring Boot 中实现发送带附件的邮件,可以按照以下步骤进行设计: 1. 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 2. 在 application.properties 文件中配置邮件服务器的信息: ```properties # 邮件服务器地址 spring.mail.host=smtp.qq.com # 邮件服务器端口 spring.mail.port=465 # 邮箱账号 spring.mail.username=your_email@qq.com # 邮箱密码 spring.mail.password=your_password # SSL协议 spring.mail.properties.mail.smtp.ssl.enable=true ``` 3. 创建一个邮件服务类 MailService,实现发送邮件功能: ```java @Service public class MailService { @Autowired private JavaMailSender mailSender; public void sendMailWithAttachment(String to, String subject, String text, File file) throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(to); helper.setSubject(subject); helper.setText(text); // 添加附件 FileSystemResource resource = new FileSystemResource(file); helper.addAttachment(file.getName(), resource); mailSender.send(message); } } ``` 4. 在需要发送邮件的地方调用 MailService 的 sendMailWithAttachment 方法,传入收件人地址、邮件主题、邮件正文和附件文件即可: ```java // 发送带附件的邮件 File file = new File("attachment.txt"); mailService.sendMailWithAttachment("recipient@example.com", "邮件主题", "邮件正文", file); ``` 以上就是在 Spring Boot 中实现发送带附件的邮件的设计过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一生酷到底

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值