SpringBoot集成Mail功能

源码地址:https://gitee.com/lxc_5952/email-demo.git

1. 邮件介绍

1.1 邮件的作用

邮件在项目中会经常用到,例如:注册,验证,找回密码,登录,信息通知

1.2 邮件协议

  1. SMTP协议:
          SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。
  2. IMAP协议 :
          IMAP全称为Internet Message Access Protocol(互联网邮件访问协议),IMAP允许从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP类似,都是一种邮件获取协议。
  3. POP3:
          POP3全称为Post Office Protocol 3(邮局协议),POP3支持客户端远程管理服务器端的邮件。POP3常用于“离线”邮件处理,即允许客户端下载服务器邮件,然后服务器上的邮件将会被删除。目前很多POP3的邮件服务器只提供下载邮件功能,服务器本身并不删除邮件,这种属于改进版的POP3协议。

2. SpringBoot实现发送邮件

2.1 Spring集成了Mail邮件发送功能

Spring官方推出了一款关于Mail的JavaMailSender类,基于SpringBoot进一步封装,轻松实现邮件发送–开箱即用
而且JavaMailSender类提供了强大的邮件发送功能,支持各种邮件的发送

2.2 集成步骤

2.2.1 添加依赖

SpringBoot集成了Mail功能,只需要添加:

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

2.2.2 获取邮箱服务器名,邮箱授权码

这里使用QQ邮箱

1. 获取邮箱服务器

POP3服务器地址为“pop.qq.com”,SMTP服务器地址为“smtp.qq.com”
注:

  1. SMTP服务器需要身份验证。
  2. 如果是设置POP3和SMTP的SSL加密方式,则端口如下:
    2.1. POP3服务器(端口995);
    2.2. SMTP服务器(端口465或587)。
2. 获取邮箱授权码

打开QQ邮箱并登录

  1. 点击邮箱设置->账户
    在这里插入图片描述
  2. 打开POP3服务,或者IMAP服务,得到授权码
    在这里插入图片描述

2.2.3 编辑配置文件

在application.yml/properties文件中编辑mail配置

spring:
  application:
    name: email-server
  mail:
    host: pop.qq.com #pop邮箱服务器地址
    username: 872XXX033@qq.com #邮箱登录账户
    password: ywaXXXXXXXXXfbi  #邮箱密码/邮箱授权码
    properties:
      from: 872XXX033@qq.com #邮件发信人,真实邮箱地址

2.2.4 编辑邮箱Controller层

1. 注入Service层对象实现业务调用

在这里插入图片描述

2. 添加请求方法

在这里插入图片描述
可上传附件(MultipartFile),这里使用String对象接收需要发送到的邮箱地址

2.2.5 编辑Service层

1. 注入邮件工具类
	@Autowired
    private JavaMailSenderImpl mailSender; //邮件工具类

通过mailSender.send(mail对象)发送邮件

2. 编辑简单的Mail对象
public String sendMail(String mail) {
		public String sendMail(String mail) {
        try {
            //简单的邮件信息(复杂邮件信息使用MimeMessageHelper对象)
            SimpleMailMessage msg = new SimpleMailMessage();
            msg.setFrom("872XXX033@qq.com");//邮件发信人,可从配置文件获取
            msg.setTo(mail);//邮件收信人
            msg.setSubject("验证码");//邮件主题
            //创建一个6位数随机数
            String s = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
            msg.setText(s);//邮件内容
            mailSender.send(msg);//发送邮件
            return "send ok";
        } catch(Exception e){
            return "send fild";//发送失败
        }
    }
3. 编辑复杂的mail对象(选1)
private  String sendMimeMail(String mail) {
        try {
       		 //创建MimeMessageHelper信息对象,true表⽰⽀持复杂类型
            MimeMessageHelper messageHelper =  
            		new MimeMessageHelper(mailSender.createMimeMessage(),  true); 
            messageHelper.setFrom("872XXX033@qq.com"); //邮件发信⼈
            messageHelper.setTo(mail); //邮件收信⼈
            messageHelper.setSubject("验证码"); //邮件主题
            String s = String.valueOf((int)((Math.random() * 9 + 1) * 100000));
            messageHelper.setText(s); //邮件内容,6位数随机数
    		mailSender.send(messageHelper.getMimeMessage()); //正式发送邮件
            log.info("发送邮件成功");
            return "send ok";
        }  catch (Exception e) {
        	return "send fail";
            //throw  new RuntimeException(e); //发送失败
        }
    }

MimeMessageHelper 常用方法

  1. setFrom(): 邮件发信人
  2. setTo(): 邮件收信人
  3. setSubject(): 邮件主题
  4. setText(): 邮件内容
  5. setCc(): 邮件抄送/密送
  6. addAttachment():邮件附件,参数附件名称,附件File对象
  7. setSentDate():发信时间,客户端显示的发信时间,参数Data对象

2.3 启动服务访问地址

2.3.1 访问地址,url拼接参数

在这里插入图片描述

2.3.2 实现功能

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot可以通过配置SMTP服务器来实现与Gmail集成。以下是集成Gmail的步骤: 1. 在`application.properties`文件中添加以下配置: ```properties spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=your-email@gmail.com spring.mail.password=your-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 请将`your-email@gmail.com`和`your-password`替换为您自己的Gmail帐户的电子邮件地址和密码。 2. 在您的Spring Boot应用程序中创建一个邮件服务类,例如`EmailService`,并注入`JavaMailSender`: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service public class EmailService { @Autowired private JavaMailSender javaMailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` 3. 在您的应用程序中使用`EmailService`发送电子邮件: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class EmailController { @Autowired private EmailService emailService; @GetMapping("/send-email") public String sendEmail() { emailService.sendEmail("recipient@example.com", "Test Email", "This is a test email."); return "Email sent successfully."; } } ``` 以上步骤将使您的Spring Boot应用程序能够通过Gmail SMTP服务器发送电子邮件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值