使用SpringBoot实现邮件发送

转载来源:https://blog.csdn.net/weixin_47390965/article/details/124015311
作者:UnIQUE Eason

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

发送前的准备

QQ邮箱为例,首先要申请开通POP3/SMTP服务或者IMAP/SMTP服务。SMTP全称为Simple MailTransfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与SMTP服务器之间,以及SMTP服务器与SMTP服务器之间的通信规则。

一、登录QQ邮箱,依次点击设置和设置下的账户
在这里插入图片描述在这里插入图片描述
二、在账户下方找到POP3/SMTP服务,点击“开启”按钮
在这里插入图片描述
三、点击开启后,可以看到发送短信验证的提示,发送成功后就可以获取到授权码,将授权码保存,后面会要用到
在这里插入图片描述
在这里插入图片描述
获取到授权码后,准备工作就完成了

发送邮件

使用SpringBoot发送邮件,首先要添加邮件依赖:

		<!--添加邮件依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

 
 

    然后配置application.yml文件:

    spring:
      mail:
        host: smtp.qq.com #邮件服务器地址
        port: 465 #端口号
        username: QQ邮箱地址
        password: 上面获取的授权码
        default-encoding: UTF-8 #默认编码格式
        properties:
          mail:
            debug: true #启动debug调试
            smtp:
              socketFactory:
                class: javax.net.ssl.SSLSocketFactory #SSL连接配置
    
     
     

      服务器地址和端口是可以在邮件的帮助中心看到的(QQ邮箱=>帮助中心=>搜索SSL)如下:
      在这里插入图片描述
      接下来就可以发送邮件了,先创建一个MyMailService用来封装邮件发送:

      @Component
      public class MyMailService {
          @Autowired
          JavaMailSender javaMailSender;
          public void sendMail(String from,String to,String cc,String subject,String text){
              SimpleMailMessage smm = new SimpleMailMessage();
              smm.setFrom(from);//发送者
              smm.setTo(to);//收件人
              smm.setCc(cc);//抄送人
              smm.setSubject(subject);//邮件主题
              smm.setText(text);//邮件内容
              javaMailSender.send(smm);//发送邮件
          }
      }
      
       
       
        • JavaMailSender是Spring Boot在MailSenderPropertiesConfiguration类中配置好的,该类在Mail自动配置类MailSenderAutoConfiguration中导入,因此这里注入JavaMailSender就可以使用了
        • 传递的5个参数分别表示邮件发送者、收件人、抄送人、邮件主题以及邮件内容
        • 简单邮件可以直接构建一个SimpleMailMessage对象进行配置,配置完成后,通过JavaMailSender将邮件发送出去

        使用测试类给自己发邮件测试一下:

        @SpringBootTest
        public class MyMailServiceTest {
            @Autowired
            MyMailService myMailService;
            @Test
            public void sendMailTest(){
                myMailService.sendMail(
                "1196302555@qq.com",
                "1196302555@qq.com",
                "1196302555@qq.com",
                "SpringBoot发送邮件",
                "邮件发送成功啦!");
            }
        }
        
         
         

          执行方法后可以看到邮件发送成功了,以上代码可以写自己的邮件
          在这里插入图片描述
          在这里插入图片描述

          发送带附件的邮件

          要发送一个带附件的邮件也非常容易,通过调用Attachment方法即可添加附件,在MailService中添加如下方法:

          public void sendFileMail(String from, String to, String subject, String text, File file){
                  try {
                      MimeMessage mm = javaMailSender.createMimeMessage();
                      MimeMessageHelper mmh = new MimeMessageHelper(mm,true);
                      mmh.setFrom(from);
                      mmh.setTo(to);
                      mmh.setSubject(subject);
                      mmh.setText(text);
                      mmh.addAttachment(file.getName(), file);
                  }catch (Exception e){
                      e.printStackTrace();
                  }
              }
          
           
           

            这里使用MimeMessageHelper简化了邮件配置,它的构造方法的第二个参数true表示构造一个multipart message类型的邮件。最后通过addAttachment方法添加附件

            测试一下:

            	@Test
                public void sendFileMailTest(){
                    myMailService.sendFileMail("1196302555@qq.com","1196302555@qq.com","发送带附件的邮件","邮件发送成功啦!",new File("E:\\test.docx"));
                }
            
             
             

              可以看到,邮件发送成功,附件也接收到了
              在这里插入图片描述
              至此,使用SpringBoot实现邮件发送就完成了

              • 0
                点赞
              • 1
                收藏
                觉得还不错? 一键收藏
              • 0
                评论
              Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它提供了许多开箱即用的功能,包括邮件发送。下面是使用Spring Boot实现邮件发送的步骤: 1. 添加依赖:在项目的pom.xml文件中添加Spring Boot的邮件依赖,例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 2. 配置邮件信息:在application.properties或application.yml文件中配置邮件服务器的相关信息,例如: ```properties spring.mail.host=smtp.example.com spring.mail.port=587 spring.mail.username=your-email@example.com spring.mail.password=your-email-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 3. 创建邮件服务类:创建一个邮件服务类,用于发送邮件。可以使用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 mailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); mailSender.send(message); } } ``` 4. 调用邮件服务类:在需要发送邮件的地方调用邮件服务类的sendEmail方法,例如: ```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("/sendEmail") public String sendEmail() { emailService.sendEmail("recipient@example.com", "Test Email", "This is a test email."); return "Email sent successfully."; } } ``` 以上就是使用Spring Boot实现邮件发送的基本步骤。
              评论
              添加红包

              请填写红包祝福语或标题

              红包个数最小为10个

              红包金额最低5元

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

              抵扣说明:

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

              余额充值