使用springboot发送QQ邮件,可以发送附件

使用springboot发送QQ邮件

在这里插入图片描述
在这里插入图片描述

1、在application.properties中写入以下配置信息

#文件上传的配置信息
#总大小
spring.servlet.multipart.max-request-size=10MB
#单个文件总大小
spring.servlet.multipart.max-file-size=2MB
#邮件任务
spring.mail.username=xxxxxxxxx@qq.com   //你自己的QQ邮箱账户
spring.mail.password=xxxxxxxxxxx  //授权码
spring.mail.host=smtp.qq.com
#开启加密认证
spring.mail.properties.mail.smtp.enable=true

2、关于授权码的获取
输入账号密码,进入你的QQ邮箱,设置—账户—开启POP3和SMTP服务,根据QQ邮箱的提示,按步骤操作即可获取授权码。
在这里插入图片描述
3、新建一个html文件,写入以下代码

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" >
<head>
    <meta charset="UTF-8">
    <title>文本邮件</title>
    <link rel="stylesheet" href="./css/layui.css">
</head>
<body>

<div style="background-color:darkcyan;text-align: center;height:40px;line-height: 40px;">
    <p >欢迎使用OO邮箱</p>
</div>

<div style="margin-top: 120px;margin-left: 60px;">
    <form th:action="@{/email}" enctype="multipart/form-data" method="post">
        <div style="margin-top:40px;margin-left: 20%;">
            <label>收件人</label>
            <input   style="width: 60%;margin-left: 10px;"  type="text" name="to" placeholder="请输入收件人邮箱">
        </div>

        <div style="margin-top:40px;margin-left: 20%;">
            <label>主题</label>
            <input  style="width: 60%;margin-left: 20px;" type="text" name="subject" placeholder="请输入邮件主题">
        </div>

        <div style="margin-top:40px;margin-left: 20%;">
            <label>正文</label>
            <input   style="width: 60%;margin-left: 20px;"   type="text" name="text" placeholder="请输入邮件正文">
        
        </div>

        <p th:text="${msg}" style="color: red;margin-left: 20%; margin-top: 20px;"></p>


        <button class="layui-btn layui-btn-sm layui-btn-primary" style="margin-top:40px;margin-left: 20%;" type="submit" >发送</button>
        <a th:href="@{/Email}" class="layui-btn layui-btn-sm layui-btn-primary" style="margin-left: 10px;margin-top:40px;">返回</a>

    </form>
</div>

</body>
</html>

在这里插入图片描述
4、controller处理email请求

//    注入邮件接口实现类
@Autowired
    JavaMailSenderImpl mailSender;
    
 @RequestMapping("/email")
    public String sendEmail(String to,String subject,String text, Model model){
        SimpleMailMessage mailMessage=new SimpleMailMessage();
        mailMessage.setSubject(subject);
        mailMessage.setText(text);
        mailMessage.setTo(to);
        mailMessage.setFrom("2951466637@qq.com");
        mailSender.send(mailMessage);
        model.addAttribute("msg","邮件发送成功");

        return "simpleEmail";
    }

如果你想发送带有附近的邮件,需要在html文件中加入

  <input type="file" name="file" />

在这里插入图片描述

然后重新写controller处理请求

 @RequestMapping("/MimeEmail")
    public String sendMimeEmail(String to,String subject,String text,MultipartFile file, Model model) throws MessagingException, IOException {
        MimeMessage mimeMessage=mailSender.createMimeMessage();
        MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
        helper.setSubject(subject);
        helper.setText(text,true);
//        添加附件内容
        //        采用file.Transto来保存上传的文件
        if (file.isEmpty()){
            model.addAttribute("msg","请选择文件");
            return "email";
        }
//       fileName: 文件名
        String fileName=file.getOriginalFilename();
//        filepath:文件保存的路径
        String filePath="C:\\Users\\韩英俊\\Desktop\\SpringBootStudy\\src\\main\\resources\\static\\uploadFiles\\uploadFile";
        File dest=new File(filePath+"/"+fileName);
        try {
            file.transferTo(dest);
            model.addAttribute("msg","上传及发送成功");
//            return "email";
        } catch (Exception e) {
            e.printStackTrace();
        }
        helper.addAttachment(fileName,dest);
        helper.setTo(to);
        helper.setFrom("2951466637@qq.com");
        mailSender.send(mimeMessage);


        return "email";
    }

5、发送邮件验证
在这里插入图片描述

提示发送成功
在这里插入图片描述
QQ邮箱显示已收到邮件在这里插入图片描述


版权声明:本文为weixin_43934513原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。