博客
关于我
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/

    你可能感兴趣的文章
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>
    Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
    查看>>
    Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
    查看>>
    python出现 unknown encoding: idna 的处理方法
    查看>>
    Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
    查看>>
    Python-numpy(2)数组的操作
    查看>>
    Python-Numpy的tile函数用法
    查看>>
    python-open函数
    查看>>
    Python-Pandas-将特定函数应用于给定级别-多索引数据框架
    查看>>
    python-queue队列通信
    查看>>
    python-ros No module named PyKDL
    查看>>
    python-social-auth 是否需要会话
    查看>>
    Python再获年度编程语言,微软或成最大赢家
    查看>>
    python-week5
    查看>>