博客
关于我
Springboot 最简单的发送邮件(文本、附件、图片)实战案例
阅读量:164 次
发布时间:2019-02-27

本文共 3530 字,大约阅读时间需要 11 分钟。

前言,我们这次案例使用QQ邮箱作为示例,作为发送者需要先完成相关的权限配置。以下是详细的操作和编码步骤。

授权操作流程:

  • 进入QQ邮箱,点击右上角的"设置"按钮
  • 在账户管理中找到"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"选项
  • 开启第一项POP3/SMTP服务,按照提示完成短信验证,获取授权码(后续代码配置需要用到)
  • 接下来开始编码。首先创建一个Spring Boot项目,除了勾选web包外,还需要添加JavaMail Sender包。

    项目创建完成后,查看pom.xml中的依赖包:

    • spring-boot-starter-web
    • spring-boot-starter-mail
    • spring-boot-starter-test

    配置参数,application.properties文件需要填写以下信息:

    • SMTP服务器地址:smtp.qq.com
    • SMTP服务器端口:587
    • 邮箱用户名:填写自己的QQ邮箱地址
    • 配置密码:填写刚刚获取的授权码

    接下来编写MailController.java:

    package com.mail.elegant.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.io.FileSystemResource;import org.springframework.mail.MailException;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RestController;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import java.io.File;import java.util.Date;@RestControllerpublic class MailController {    @Autowired    private JavaMailSender javaMailSender;        @PostMapping("sendSimpleMailMessage")    public String sendSimpleMailMessage() {        try {            SimpleMailMessage message = new SimpleMailMessage();            message.setFrom("您的QQ邮箱地址");            message.setReplyTo("您的QQ邮箱地址");            String[] recipients = {"收件人邮箱1", "收件人邮箱2"};            message.setTo(recipients);            message.setCc("抄送邮箱地址");            message.setSentDate(new Date());            message.setSubject("邮件标题");            message.setText("邮件正文内容");            javaMailSender.send(message);        } catch (MailException e) {            e.printStackTrace();            return "发送失败";        }        return "发送成功";    }    @PostMapping("sendEnclosureMailMessage")    public String sendEnclosureMailMessage() {        try {            MimeMessage mimeMessage = javaMailSender.createMimeMessage();            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);            helper.setSubject("邮件标题");            helper.setFrom("您的QQ邮箱地址");            helper.setTo("收件人邮箱地址");            helper.setCc("抄送邮箱地址");            helper.setBcc("测试邮箱地址");            helper.setSentDate(new Date());            helper.setText("邮件正文内容");            helper.addAttachment("附件名", new File("附件路径"));            javaMailSender.send(mimeMessage);        } catch (MailException | MessagingException e) {            e.printStackTrace();            return "发送失败";        }        return "发送成功";    }    @PostMapping("sendImageMailMessage")    public String sendImageMailMessage() {        try {            MimeMessage mimeMessage = javaMailSender.createMimeMessage();            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);            helper.setSubject("邮件标题");            helper.setFrom("您的QQ邮箱地址");            helper.setTo("收件人邮箱地址");            helper.setCc("抄送邮箱地址");            helper.setBcc("测试邮箱地址");            helper.setSentDate(new Date());            helper.setText("

    图片内容

    ", true); helper.addInline("图片ID", new FileSystemResource(new File("图片路径"))); javaMailSender.send(mimeMessage); } catch (MailException | MessagingException e) { e.printStackTrace(); return "发送失败"; } return "发送成功"; }}注意事项:1. 确保MailController.java中的邮箱地址与application.properties中的配置一致2. 附件和图片路径请根据实际项目路径填写3. 使用Postman分别测试接口,发送邮件后QQ邮箱会收到相应邮件

    转载地址:http://hxwb.baihongyu.com/

    你可能感兴趣的文章
    PHP 中 this,self,parent 的区别、用法
    查看>>
    PHP 中如何高效地处理大规模数据的排序?
    查看>>
    PHP 之ftp客户端类封装实现
    查看>>
    php 代码改进
    查看>>
    php 代码混淆
    查看>>
    PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题
    查看>>
    Redis系列之如何避免缓存击穿
    查看>>
    php 内存分析
    查看>>
    PHP 函数名前面加&
    查看>>
    redis报错
    查看>>
    php 删除包含某一字符的数组元素
    查看>>
    Redis学习总结(19)——Redis 5种集群方式对比
    查看>>
    php 反射
    查看>>
    php 处理 大并发
    查看>>
    php 大文件上传
    查看>>
    php 子进程监听消息,swoole学习笔记之多线程端口监听问题记录 多进程epoll模式...
    查看>>
    PHP 学习笔记 (四)
    查看>>
    Redis入门概述
    查看>>
    php 实现Iterator 接口
    查看>>
    PHP 实现N阶矩阵相乘
    查看>>