SpringBoot·发送邮件

发送邮件服务
**注:**使用maven自己定义的项目时thymeleaf 路径下html文件会找不到,使用idea新建spring项目解决此问题。(神奇·真狗

  1. 加入依赖spring-boot-starter-mail
  2. 配置邮件发送服务-申请邮箱发送的授权码(以QQ为例: 在设置中找到开启服务-生成授权码)
  3. 发送简单文本邮件(JavaMailSender组件)
  4. 发送带附件的邮件: 包括图片、文档等(JavaMailSender组件)
  5. 加入thymelea模板,用于发送带模板的邮件(JavaMailSender组件)
    get请求 参数使用
    @RequestMapping(value = "/mai", method = RequestMethod.GET)
    post请求 consumes参数使用
    @RequestMapping(value = "/upmai", method = RequestMethod.POST, consumes="application/json")

    @RequestMapping(value = "/upmail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
<!--email-->
<dependencies>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.1.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.7.RELEASE</version>
</dependency>
<!--druid 使spring-jdbc.xml数据源配置生效 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.16</version>
</dependency>
<!--谷歌定义的map集合依赖-->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>19.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>1.3.3.RELEASE</version>
</dependency>
</dependencies>

<build>
  <!--spring boot打包插件-->
  <plugins>
      <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>2.6.6</version>
      </plugin>
  </plugins>
  <!--资源目录配置-->
  <resources>
      <resource>
          <directory>src/main/resources</directory>
          <filtering>true</filtering>
      </resource>
  </resources>
</build>
Map<String,Object> resMap= Maps.newHashMap();  // 谷歌浏览器的map解释器
// Map<String,Object> mpp = new HashMap<>();
mpp.put("st",st);

application.properties 文件配置信息

#mybatis.type-aliases-package=com.debug.steadyjack.entity
mybatis.mapper-locations=classpath:mappers/*.xml

#视图解析器
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

#发送邮件服务配置
spring.mail.host=smtp.qq.com
spring.mail.username=**@qq.com
#你的qq账号授权码
spring.mail.password=
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

spring.mail.properties.mail.debug=true

定义发送邮件所需要的方法

@Component
public class Mailservice {
    @Autowired
    JavaMailSender javaMailSender;
        // 发送普通邮件方法
    public void sendSimpleMail(String from,String to,String cc,String subject,String content){
        SimpleMailMessage simpMag = new SimpleMailMessage();
        simpMag.setFrom(from);   // 发送人
        simpMag.setTo(to);       // 抄送人
        simpMag.setCc(cc);       // 接收人
        simpMag.setSubject(subject); // 邮件主题
        simpMag.setText(content);    // 邮件内容
        javaMailSender.send(simpMag);
    }

    // 发送带附件邮件
    public void sendSimpleMailFile(String from, String to, String cc, String subject, String text, File file) {
        try{
            MimeMessage message =javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setCc(cc);
            helper.setSubject(subject);
            helper.setText(text);
            helper.addAttachment(file.getName(),file);
            javaMailSender.send(message);
    }catch(MessagingException e)
        {
            e.printStackTrace();
        }
    }

    // 发送带模板的邮件 需要的添加thymeleaf依赖
    public void sendSimpleMailview(String from, String to, String cc, String subject, String content) {
        try{
            MimeMessage message =javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setCc(cc);
            helper.setSubject(subject);
            helper.setText(content,true);
            javaMailSender.send(message);
        }catch(MessagingException e)
        {
            System.out.println("发送失败");
           // e.printStackTrace();
        }
    }
}

定义一个实体类用于接受发送邮件的收件人和邮件内容

@Data      // 自动生成get、set方法
@ToString  // 自动生成toString方法
public class MailMap {
    String from;
    String to;
    String cc;
    String subject;
    String text;
    String simpMag;
    String file;
}

发送邮件

@RestController
public class SendmailApplicationTests {
    @Autowired
    Mailservice mailservice;
    @RequestMapping(value="/mail",method= RequestMethod.GET)
    public void sendSimpleMail(){

        mailservice.sendSimpleMail(
                 "@qq.com"      // 发送人
                ,"@sina.com"    // 抄送人
                ,"@sina.com"    // 接受人
                ,"紫依枫"       // 主题 
                ,"世界大门打开"  // 内容
        );
    }
    
@RequestMapping(value = "/upmail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public String upmail(@RequestBody MailMap mail) throws Exception {

        mailservice.sendSimpleMail(
                mail.getFrom()   // 发送人
                ,mail.getTo()    // 抄送人
                ,mail.getCc()    // 接受人
                ,mail.getSubject()   // 主题
                ,mail.getText()      // 内容
        );
        return "发送成功";
    }

  @ResponseBody
    @RequestMapping(value = "/upmail2", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    // 发送带附件的邮件
    public String upmail2(@RequestBody MailMap mail) throws Exception {

        mailservice.sendSimpleMailFile(
                "@qq.com"   // 发送人
                ,"@sina.com"    // 抄送人
                ,"@sina.com"    // 接受人
                ,"紫依枫"             // 主题
                ,"世界大门打开"      // 内容
                ,new File("C:\\Users\\ldd709\\Desktop\\study\\大聪明.txt")
        );
        return "发送成功";
    }
    @ResponseBody
    @RequestMapping(value = "/upmail3", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public String upmail3(@RequestBody MailMap mail) throws Exception {

        mailservice.sendSimpleMailFile(
                mail.getFrom()   // 发送人
                ,mail.getTo()// 抄送人
                ,mail.getCc()   // 接受人
                ,mail.getSubject()   // 主题
                ,mail.getText()      // 内容
                ,new File("C:\\Users\\ldd709\\Desktop\\study\\大聪明.txt")
        );
        return "发送成功";
    }

    @Autowired
    TemplateEngine templateEngine;
    @ResponseBody
    @RequestMapping(value = "/upmail4", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    发送带html模板的邮件
    public String upmail4(@RequestBody MailMap mailf) {

            Context ctx = new Context();
            ctx.setVariable("username","sang");
            ctx.setVariable("gender","男");
            String mail = templateEngine.process("mailtemplate",ctx);
            mailservice.sendSimpleMailview(
                    "@qq.com"   // 发送人
                    ,"@sina.com"    // 抄送人
                    ,"@sina.com"    // 接受人
                    ,"紫依枫"             // 主题
                    ,mail     // 内容
        );

        return "发送成功4";
    }
}

邮件模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"><meta>
    <title>邮件</title>
</head>
<body>
<div>邮箱激活</div>
<div>你的注册信息
        <tr>
            <td>用户名</td>
            <td th:text="${username}"></td>
        </tr>
        <tr>
            <td>用户性别</td>
            <td th:text="${gender}"></td>
        </tr>
</div>
<div>
    <a href="http://www.baidu.com">核对无误点击本链接激活邮箱</a>
</div>
</body>
</html>

使用ApiPost6测试工具测试

{
"from":"@qq.com"
,"to":"@qq.com"
,"cc":"@sina.com"
,"subject":"紫依枫&iy"
,"text":"超神了"
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

青鸟遇鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值