Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)

news2024/11/26 2:40:18

Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)

教学视频+源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87452056

目录

  • Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
  • `教学视频+源代码下载链接地址:`[https://download.csdn.net/download/weixin_46411355/87452056](https://download.csdn.net/download/weixin_46411355/87452056)
    • 一、注册并登录163邮箱
    • 二、概述
    • 三、案例实操
      • 3.1 创建一个springboot项目
      • 3.2 application.yml配置文件
      • 3.3 发送普通内容的邮件
      • 3.4 发送复杂内容的邮件

一、注册并登录163邮箱

注册163邮箱
登录163邮箱

在这里插入图片描述
点击继续开启
在这里插入图片描述
手机微信扫描二维码发送短信

在这里插入图片描述
在这里插入图片描述
点击开启
在这里插入图片描述
在这里插入图片描述
手机微信扫描二维码发送短信
在这里插入图片描述
点击“确定”
在这里插入图片描述
在这里插入图片描述

我们使用java程序发送邮件,属于使用第三方客户端发送邮件
使用第三方客户端发送右键也需要先通过认证(登录):
官方客户端认证: 用户名 密码
第三方客户端的认证:用户名 授权码
授权码需要通过发送短信开通指定功能时获取

二、概述

SpringBoot实现邮件功能是非常的方便快捷的,因为SpringBoot默认有starter实现了Mail。
发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。
最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring推出了JavaMailSender更加简化了邮件发送的过程,在之后springboot对此进行了封装就有了现在的spring-boot-starter-mail

三、案例实操

3.1 创建一个springboot项目

在这里插入图片描述

在这里插入图片描述
这里“输入输出”勾选“Java Mail Sender”
在这里插入图片描述

3.2 application.yml配置文件

spring:
  # 设置连接邮箱的相关信息
  mail:
    host: smtp.163.com
    username: fbihackerharryhao@163.com
    password: IFLOJXMWEFJTXBYI # 使用授权码

3.3 发送普通内容的邮件

测试类


package com.bjpowernode.springbootmailsending;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

@SpringBootTest
class SpringbootMailsendingApplicationTests {

    //注入发送邮件的工具对象
    @Autowired
    private JavaMailSender javaMailSender;

    /**
     * 发送普通内容的邮件
     */
    @Test
    void contextLoads() {
        //1.创建邮件对象
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        //2.设置邮件的相关信息
        simpleMailMessage.setFrom("fbihackerharryhao@163.com");//设置邮件的发出方
        simpleMailMessage.setTo("3541434135@qq.com");//设置邮件的接收方
        simpleMailMessage.setSubject("这是一封测试邮件");//设置邮件的标题
        simpleMailMessage.setText("这是邮件的内容");//设置邮件的内容
        //3.使用工具将邮件对象发出
        javaMailSender.send(simpleMailMessage);
    }

}

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

3.4 发送复杂内容的邮件

在这里插入图片描述

测试类

  /**
     * 发送复杂内容的邮件
     */
    @Test
    public void test2() throws MessagingException {
        //1.创建邮件对象
        MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
        //2.创建邮件的工具来设置邮件的相关属性
        /*
        源码:
        public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, @Nullable String encoding)
			throws MessagingException {

		    this(mimeMessage, (multipart ? MULTIPART_MODE_MIXED_RELATED : MULTIPART_MODE_NO), encoding);
	    }
	    参数分析new MimeMessageHelper(mimeMailMessage, true, "utf-8");
	    第一个参数MimeMessage mimeMessage是邮件对象MimeMessage
	    第二个参数boolean multipart是文件是否有多个部分(文本内容、图片等)
	    第三个参数@Nullable String encoding是编码格式,指定了不能为空,必须要设置它。
        */
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true, "utf-8");
        //3.使用该工具 设置发送的邮件的相关属性
        mimeMessageHelper.setFrom("fbihackerharryhao@163.com");
        mimeMessageHelper.setTo("3541434135@qq.com");

        mimeMessageHelper.setSubject("这是一封测试用户的复杂文件");
        mimeMessageHelper.setText("<h1>这是复杂邮件的文本内容</h1>");
        /*
        源码
        public void addInline(String contentId, File file) throws MessagingException {
		Assert.notNull(file, "File must not be null");
		FileDataSource dataSource = new FileDataSource(file);
		dataSource.setFileTypeMap(getFileTypeMap());
		addInline(contentId, dataSource);
	}
        */
        //在邮件内容中嵌入指定的图片
        mimeMessageHelper.addInline("picture",new File("D:\\operation\\hacker.jpg"));
        //为邮件添加附件
        /* 源码:
        public void addAttachment(String attachmentFilename, File file) throws MessagingException {
        第一个参数 String attachmentFilename附件的名称
        第二个参数 File file 附件具体的文件
        */
        mimeMessageHelper.addAttachment("附件.txt",new File("D:\\operation\\attachment.txt"));
        //4.将邮件发出
        javaMailSender.send(mimeMailMessage);
    }

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图解LeetCode——1233. 删除子文件夹(难道:中等)

一、题目 你是一位系统管理员&#xff0c;手里有一份文件夹列表 folder&#xff0c;你的任务是要删除该列表中的所有 子文件夹&#xff0c;并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下&#xff0c;那么 folder[i] 就是 folder[j] …

Redis学习【4】之简单动态字符串

文章目录一 简单动态字符串 SDS1.1 SDS简介1.2 SDS结构1.3 SDS优势1.3.1 防止”字符串长度获取”性能瓶颈1.3.2 保障二进制安全1.3.3 减少内存再分配次数1.3.4 兼容C函数1.4 常用的 SDS 操作函数一 简单动态字符串 SDS 1.1 SDS简介 无论是 Redis 的 Key 还是 Value&#xff0…

《系统架构设计》-01-架构和架构师概述

文章目录1. 架构的基本定义1.1 架构组成理论1.1.1 系统元素1&#xff09;概念2&#xff09;静态结构和动态结构1.1.2 基本系统属性1.1.3 设计和发展原则1.2 架构的决策理论1.2.1 统一软件过程&#xff08;Rational Unified Process&#xff0c;统一软件过程&#xff09;1.2.2 决…

《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)

1.简介 上一篇文章中&#xff0c;从TestNg的特点我们知道支持变量&#xff0c;那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试。那么如何实现同时启动不同的浏览器对脚本进行测试&#xff0c;且听我娓娓道来。 2.项目实战 2.1创建一个TestNg class 1.首先按…

深入工厂|高精密多层板是如何被智造出来的?

或许有很多人从网络上见过各种教程&#xff0c;告诉你单层板是什么&#xff0c;多层板是什么&#xff0c;他们该如何做出来&#xff0c;但是在具体制造时却全凭想象&#xff0c;今天&#xff0c;就让我们来实地看看&#xff0c;精密的多层板是如何被制造出来的&#xff01;今天…

大数据---zookeeper集群搭建

zookeeper集群搭建 跳过安装jdk的方法就是找到安装jdk环境的虚拟机克隆 克隆之后的虚拟机根据台数直接修改ip地址&#xff0c;重新配置免密登录&#xff0c;确保每台机器能够互相连接&#xff0c;然后安装zookeeper 文章目录zookeeper集群搭建前期工作服务器划分修改hostname设…

【java】Spring Boot -- Spring AOP原理及简单实现

文章目录一、AOP基本概念1.1、Filter、Interceptor、AOP1.2、AOP中的一些概念1).通知&#xff08;Advice&#xff09;: AOP 框架中的增强处理。通知描述了切面何时执行以及如何执行增强处理&#xff1b;通知类型&#xff0c;主要有以下几种&#xff1a;2).连接点&#xff08;Jo…

Acwing---1246. 等差数列

等差数列1.题目2.基本思想3.代码实现1.题目 数学老师给小明出了一道等差数列求和的题目。 但是粗心的小明忘记了一部分的数列&#xff0c;只记得其中 N个整数。 现在给出这 N个整数&#xff0c;小明想知道包含这 N 个整数的最短的等差数列有几项&#xff1f; 输入格式 输入…

ChatGPT 接入微信,最强聊天机器人来了

最近的 ChatGPT 又再次火热起来了&#xff0c;各种周边工具也是层出不穷&#xff0c;今天我们就一起来做一个基于 ChatGPT 的微信聊天机器人&#xff0c;来感受 AI 世界的快乐吧~ 我们先来看几个我比较关心的问题吧 Python 语言算法 什么是 ChatGPT 人工智能会统治世界吗&a…

【Kubernetes】【二】环境搭建 环境初始化

本章节主要介绍如何搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类&#xff1a;一主多从和多主多从。 一主多从&#xff1a;一台Master节点和多台Node节点&#xff0c;搭建简单&#xff0c;但是有单机故障风险&#xff0c;适合用于测试环境多主…

带你玩转Jetson之Deepstream简明教程(四)DeepstreamApp如何使用以及用于工程验证。

1.DeepstreamApp是什么&#xff1f; 如果你安装完毕deepstream整体框架&#xff0c;会在你的系统执行目录内有可执行文件&#xff0c;文件名字是deepstream-app。这是一个可执行脚本文件&#xff0c;通过deepstream框架中的代码在安装的时候编译后install到系统根目录内。 此脚…

家政服务小程序实战教程11-首页跳转到分类页面

小程序的分类页面&#xff0c;通常会以侧边栏导航显示内容&#xff0c;我们使用了侧边选项卡和数据列表组件实现了分类展示的功能 还有个需求是从首页点击某个分类的时候&#xff0c;跳转到分类页时候需要选中对应的类别 01 增加页面参数 页面如果跳转时候需要这种接收参数并实…

JAVA和Spring的SPI机制讲解

文章目录1 SPI机制讲解1.1 引言1.2 Java SPI实现1.2.1 示例说明1.2.2 相关测试1.2.3 源码分析1.3 Spring SPI1.3.1 Spring 示例1.3.2 相关测试类1.3.3 源码分析1 SPI机制讲解 1.1 引言 SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制&#xff0c;可以用来启…

力扣337题 打家劫舍Ⅲ Java语言版

/**每个节点都用一个长度为2的数组来表示其状态,其中dp[0]表示偷该节点所得到的最多钱币,dp[1]表示不偷该节点所得到的最多钱币*/ class Solution {public int rob(TreeNode root) {int[] robRoot robTree(root);return Math.max(robRoot[0],robRoot[1]);}public int[] robTre…

rtp协议

RTP协议 在实时音视频通话中&#xff0c;我们通常使用 UDP 作为传输层协议&#xff0c;使用 RTP 协议包荷载音视频数据&#xff0c;RTP&#xff08;Real-time Transport Protocol&#xff09;是一种在 Internet 上传输多媒体数据的应用层协议&#xff0c;它通常建立在 UDP 之上…

RabbitMQ学习(五):RabbitMQ持久化

一、持久化概念在上一章内容中我们已经看到了如何处理任务不丢失的情况&#xff0c;但是如何保障当 RabbitMQ 服务停掉后消 息生产者发送过来的消息不丢失呢&#xff1f;默认情况下 RabbitMQ 退出或由于某种原因崩溃时&#xff0c;它将忽视队列 和消息&#xff0c;除非告知它不…

Python 考试练习题4

1. 将元组 (1,2,3) 和集合 {4,5,6} 合并成一个列表。 tup(1,2,3) set{4,5,6} listlist(tup)list(set) print(list) 2. 在列表 [1,2,3,4,5,6] 首尾分别添加整型元素 7 和 0。 #方法1 list[1,2,3,4,5,6] list.insert(0,7) #list.append(0) 这两种也可以 #list.insert(len(list…

PowerJob的server启动都经历了哪些?代码不多也很简单,咱们来逐一理解。

这是一篇让你受益匪浅的文章&#xff0c;点个关注交流一下吧~ PowerJob如何使用&#xff0c;官方文档已经说的很详细了&#xff0c;即使没学过计算机的人&#xff0c;按照那上面的步骤来也是可以搭建出一个可以使用的例子来&#xff0c;所以今天就不在这里重复前人的工作&#…

DataWhale 大数据处理技术组队学习task1

DataWhale 大数据处理技术组队学习task1 一、大数据概述 1. 大数据时代&#xff08;详细内容参考参考文章&#xff09; 2. 大数据的概念&#xff08;又或者是特点&#xff09; 4V 数据量大&#xff08;Volume&#xff09; 数据来源&#xff1a;可以是计算机、手机&#xff…

Linux 常用命令——【 2.查看程序端口占用及网络连接 netstat 命令】

文章目录1. netstat 简介2.命令格式&#xff1a;3. 命令参数&#xff1a;4. 常用命令1. netstat 简介 netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序&#xff0c;…