项目实训-邮箱服务

创新项目实训

任务

为了扩展项目的功能,引入邮箱服务,如使用邮箱服务进行注册时的邮箱验证,将图表及相关信息发送到指定邮箱等功能。

具体流程

  1. 首先在,依赖中引入依赖
<!--引入邮箱服务-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  1. application.properties中进行配置相关信息
spring.mail.protocol=smtp
spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=yourEmail@qq.com
spring.mail.password=
spring.mail.default-encoding=utf-8
spring.mail.properties.mail.smtp.auth=true
  • 注意该password是在你的qq邮箱中申请smtp服务,给提供的密码!!!
  • 步骤如下
    • 登录QQ邮箱:
      打开浏览器并访问QQ邮箱的官方网站(mail.qq.com),使用QQ账号和密码登录。

    • 进入设置:
      登录后,在页面右上角找到QQ头像或用户名旁边,点击“设置”按钮。

    • 选择账户设置:

    • 在下拉菜单中选择“账户”选项,这会带到账户设置页面。

    • 找到SMTP服务设置:
      向下滚动至页面中部,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”区域。

    • 开启SMTP服务:
      在“SMTP服务”一栏,如果服务尚未开启,点击“开启”按钮。开启后,可能需要输入一次密码以确认操作。

    • 保存设置:
      完成上述步骤后,确保点击页面底部的“保存更改”按钮,以使设置生效。

  1. 使用相关服务
  • JavaMailSenderImpl来发送邮件,并且支持发送简单的纯文本邮件(包含验证码)以及更复杂的、带有HTML内容和嵌入式图片的邮件。具体来说:

    • 控制器包含了两个POST方法:/sendSimpleMail用于发送包含验证码的简单文本邮件;/sendImageMail则负责发送含有图片和分析结论的富文本邮件,其中图片是以Base64编码形式在请求体中传递的。
package com.example.demo.controller;

import com.example.demo.payload.DataRequest;
import com.example.demo.payload.DataResponse;
import com.example.demo.utils.CommonMethod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Random;

@RestController
@RequestMapping("/api/mail")
public class MailController {
    @Autowired
    JavaMailSenderImpl javaMailSender;

    @PostMapping("/sendSimpleMail")
    public DataResponse sendSimpleMail(@RequestBody DataRequest dataRequest) {
        String Receiver = dataRequest.getString("email");
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("注册验证码信息");
        Integer code = new Random().nextInt(8999) + 1000;
        message.setText("【智能数据分析系统】您的验证码是 " + code + ",有效时间 5 分钟,请不要泄露验证码给其他人。如非本人操作,请忽略!");
        message.setTo(Receiver);
        message.setFrom("yourEmail");//此处与你的配置的邮箱保持一致
        //默认发送方已经配置好了
        javaMailSender.send(message);
        return CommonMethod.getReturnData(200,code,"发送成功");
    }

    @PostMapping("/sendImageMail")
    public DataResponse sendImageMail(@RequestBody DataRequest dataRequest){
        try{
            String imgData= dataRequest.getString("imageData");//获取图片Base64编码
            String to=dataRequest.getString("email");//
            String subject=dataRequest.getString("subject");
            String analyse=dataRequest.getString("analyse");
            // 将Base64编码的图片转换为HTML img标签
            String imgTag = "<img src='data:image/png;base64," + imgData.split(",")[1] + "'/>";
            // 构建邮件正文
            String emailBody = "根据数据绘制的:<br>" + imgTag +"<br>得到的结论是:<br>"+analyse;
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setTo(to);
            helper.setFrom("yourEmail");
            helper.setSubject(subject);
            helper.setText(emailBody, true); // 第二个参数为true表示启用HTML格式
            javaMailSender.send(mimeMessage);
            return CommonMethod.getReturnMessage(200,"ok");
        }catch(MessagingException e){
            return CommonMethod.getReturnMessage(500, "Failed to send email: " + e.getMessage());
        }

    }
}

请添加图片描述

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值