IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java发送邮件超详细!!!(以QQ邮箱个人版和企业版为例) -> 正文阅读

[Java知识库]Java发送邮件超详细!!!(以QQ邮箱个人版和企业版为例)

Java发送邮件超详细!!!(以QQ邮箱个人版和企业版为例)

个人邮箱示例

配置依赖
<!--发送邮件-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
简单了解涉及的两个传输协议
  • SMTP协议:

**发送邮件:**我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

  • POP3协议:

接收邮件: 我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

QQ邮箱中获取对应的权限

QQ邮箱需要安全验证,我们需要获取他对应的权限

在这里插入图片描述

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

配置文件
#发送邮件配置
# SMTP服务器的地址,这是QQ的,其他的邮箱要改一下
spring.mail.host=smtp.qq.com
#发送方的邮箱
spring.mail.username=xxxxxxx@qq.com
#这里刚刚获得的授权码
spring.mail.password=movndmshshvxecag
# 设置是否需要认证,如果为true,那么用户名和密码就必须的,
# 如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。
spring.mail.properties.mail.smtp.auth=true
# STARTTLS 是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.default-encoding=UTF-8
工具类
@Component
@Slf4j
public class MailUtil {
    @Value("${spring.mail.username}")
    private String sender; //邮件发送者

    @Resource
    private JavaMailSender javaMailSender;


    /**
     * 发送文本邮件
     *
     * @param mail
     */
    public void sendSimpleMail(Mail mail) {
        try {
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            mailMessage.setFrom(sender); //邮件发送者
            mailMessage.setTo(mail.getRecipient()); // 邮件发给的人
            mailMessage.setSubject(mail.getSubject());  // 邮件主题
            mailMessage.setText(mail.getContent());  // 邮件内容
            //mailMessage.copyTo(copyTo);

            javaMailSender.send(mailMessage);
            log.info("邮件发送成功 收件人:{}", mail.getRecipient());
        } catch (Exception e) {
            log.error("邮件发送失败 {}", e.getMessage());
            throw new BusinessException(BusinessExceptionCode.EMAIL_FORMAT_ERROR); //这是我自定义的一个异常码
        }
    }

    //复杂邮件
//    MimeMessage mimeMessage = mailSender.createMimeMessage();
//    MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
//        messageHelper.setFrom("jiuyue@163.com");
//        messageHelper.setTo("September@qq.com");
//        messageHelper.setSubject("BugBugBug");
//        messageHelper.setText("一杯茶,一根烟,一个Bug改一天!");
//        messageHelper.addInline("bug.gif", new File("xx/xx/bug.gif"));
//        messageHelper.addAttachment("bug.docx", new File("xx/xx/bug.docx"));
//        mailSender.send(mimeMessage);

}
JavaBean
public class Mail implements Serializable {
    private static final long serialVersionUID = 4359709211352400087L;
    private String recipient;//邮件接收人
    private String subject; //邮件主题
    private String content; //邮件内容
}
测试类
@SpringBootTest
public class SpringbootMailApplicationTests {

    @Resource
    private MailUtil mailUtil;


    //接收人
    private static final String recipient = "bugbugbug@qq.com";

    /**
     * 发送文本邮件
     */
    @Test
    public void sendSimpleMail() {
        Mail mail = new Mail();
        int code = (int) ((Math.random() * 9 + 1) * 100000);
        mail.setRecipient(recipient);
        mail.setSubject("修改邮箱");
        mail.setContent("亲爱的用户:您好!\n" +
                "\n" + "    您收到这封电子邮件是因为您 (也可能是某人冒充您的名义) 申请了修改邮箱。假如这不是您本人所申请, 请不用理会这封电子邮件, 但是如果您持续收到这类的信件骚扰, 请您尽快联络管理员。\n" +
                "\n" +
                "   请使用以下验证码完成后续修改邮箱流程\n" + "\n  " +
                code + "\n\n" +"  注意:请您收到邮件的十分钟内("+
                DateFormatUtils.format(new Date().getTime() + 10 * 60 * 1000, "yyyy-MM-dd HH:mm:ss")+
                ")前使用,否则验证码将会失效。"
                );
        mailUtil.sendSimpleMail(mail);
    }

}
结果

在这里插入图片描述

企业邮箱示例

企业邮箱相对于个人邮箱要改两处地方

一:配置文件
#需要改一下smtp地址,我在这卡了半天没找到,太草了QwQ!!!
spring.mail.host=smtp.exmail.qq.com
spring.mail.username=xxxxx@xxxx.com
#注意这里的密码可以填登录密码,不需要授权码,但如果你想用授权码登录,授权码获取参照第三条
spring.mail.password=xxxx
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.default-encoding=UTF-8

#如果是https的,ssl配置必须有,如果不是可以不用加
#spring.mail.properties.mail.smtp.ssl.enable=true
#spring.mail.properties.mail.smtp.ssl.socketFactory.class=com.sun.mail.util.MailSSLSocketFactory
#spring.mail.properties.mail.smtp.ssl.socketFactory.fallback=false

二:用管理员账号授予邮箱对应权限

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f1JrIGzv-1630250301725)(C:\Users\微瞬\AppData\Roaming\Typora\typora-user-images\image-20210829213148445.png)]

在这里插入图片描述

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

三:获取授权码

如果想用授权码登陆可以这样获取授权码

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 11:52:17  更:2021-08-30 11:54:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:14:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码