java发送邮件到qq邮箱
自己的授权码自己记好
引入依赖
<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version>
</dependency>
<dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.4.7</version>
</dependency>
controller层代码
package com.cao.controller;import com.cao.pojo.Mail;
import com.cao.utils.EmailUtils;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api/email")
@Slf4j
public class SendEmailController {@PostMapping("/send") // http://localhost:8080/api/email/sendpublic String sendEmail(@RequestBody Mail mail) {Gson gson = new Gson();log.info("输入的mail对象是: {}", gson.toJson(mail));try {EmailUtils.createMimeMessage(mail.getSendEmail(),mail.getReceiveEmail(),mail.getReceiveName(),mail.getSubject(),mail.getSendName(),mail.getContent());return "发送完成";} catch (Exception e) {log.error("发送出现了异常", e);throw new RuntimeException(e);}}
}
Service层代码
package com.cao.utils;import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;public class EmailUtils {/*** 发件⼈邮箱密码 - 登录邮件开启 SMTP 服务后,邮件服务商⽣成的“授权码”*/public static final String authorizeCode = "oeqdschg1122lhgecbe12"; //自己的授权码替换下/*** 发件⼈SMTP服务器地址,⼀般的格式为:smtp.xxx.com,其中xxx为邮件服务商名称*/public static final String smtpHost = "smtp.qq.com";/*** 协议*/public static final String protocol = "smtp";public static Session getEmailSession() {// 参数配置,⽤于连接邮件服务器Properties props = new Properties();// 使⽤协议props.setProperty("mail.transport.protocol", protocol);// 发件⼈邮箱的 SMTP 服务器地址props.setProperty("mail.smtp.host", smtpHost);// 需要请求认证props.setProperty("mail.smtp.auth", "true");// 创建会话对象,⽤于与邮箱服务器交互Session session = Session.getInstance(props);// 设置为debug模式,在控制台中可以查看详细的发送⽇志session.setDebug(true);return session;}/*** 发送邮件的工具类*/public static MimeMessage createMimeMessage(String sendEmail, String receiveEmail, String receiveName, String subject, String sendName, String content) throws Exception {Session session = getEmailSession();// 1.创建邮件对象MimeMessage message = new MimeMessage(session);// 2.设置发件⼈,其中 InternetAddress 有三个参数,分别为:邮箱,显示的昵称,昵称的字符集编码message.setFrom(new InternetAddress(sendEmail, sendName, "UTF-8"));// 3.设置收件⼈ - MimeMessage.RecipientType.TOmessage.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveEmail, receiveName, "UTF-8"));// 4.设置邮件主题message.setSubject(subject, "UTF-8");// 5.设置邮件正⽂内容,指定格式为HTML格式message.setContent(content, "text/html;charset=UTF-8");// 6.设置显示发件时间message.setSentDate(new Date());// 7.保存设置message.saveChanges();// 8.根据 Session 获取邮件传输对象Transport transport = session.getTransport();// 9.连接邮件服务器transport.connect(sendEmail, authorizeCode);// 10.发送邮件transport.sendMessage(message, message.getAllRecipients());// 11.关闭连接transport.close();return message;}
}
测试: 调用controller
查看是否有邮件收到
相关文章:
java发送邮件到qq邮箱
自己的授权码自己记好 引入依赖 <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version> </dependency> <dependency><groupId>javax.mail</groupId>&…...
MySQL中的JSON数据类型计数及多张表COUNT的数据相加
1.使用场景:在MySQL中,JSON作为一种数据类型存储在表的列中。需计算键值对的数量。 2.方法:SELECT COUNT(chief>$.number) FROM t_projectapplication where id #{id};(t_projectapplication:表;chief&…...
XDOJ78.机器人
标题 机器人 类别 综合 时间限制 1S 内存限制 256Kb 问题描述 机器人按照给定的指令在网格中移动,指令有以下四种: N 向北(上)移动 S 向南(下)移动 E 向东(右)移动 W 向西&…...
分布式系统架构设计之分布式事务的概述和面临的挑战
在当今大规模应用和服务的背景下,分布式系统的广泛应用已经成为了一种必然的主流趋势。然后,伴随着分布式系统的应用范围的增长,分布式事务处理成为了一个至关重要的关键话题。在传统的单体系统中,事务处理通常相对简单࿰…...
私有化部署你的甘特图协作工具
安装 首先去官网 https://zz-plan.com/deploy 下载对应的版本 arm是对应m1 m2 m3的mac amd是老的intel处理器 准备工作 安装mysql zz-plan需要依赖mysql 生成token 解压下载的压缩包 创建token./zz-plan -c 复制创建的token去获取授权码,点击获取免费授权码 …...
编程笔记 html5cssjs 011 HTML内连框架
编程笔记 html5&css&js 011 HTML内连框架 一、内连框架(一)意义(二)属性 二、操作注意 接下来要看一下网页内的划分。通过内连框架在当前页面嵌入一个特定内容,是一种特定需要。 一、内连框架 HTML 内联框架元…...
Stable Diffusion 系列教程 - 5 ControlNet
ControlNet和LORA的定位都是对大模型做微调的额外网络。作为入门SD的最后一块拼图是必须要去了解和开发的。为什么ControlNet的影响力如此的大?在它之前,基于扩散模型的AIGC是非常难以控制的,扩散整张图像的过程充满了随机性。这种随机性并不…...
【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】
【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】 一、导出虚拟机二、导入虚拟机三、启动数据库四、使用Data Studio连接数据库 一、导出虚拟机 选择关机状态的虚拟机 -> 管理菜单 -> 导出虚拟电脑 点击完成后,需要等待一小段时间,如…...
“华为杯”杭州电子科技大学2023新生编程大赛---树
题目链接 Problem Description 给定一棵包含 n 个节点的带边权的树,树是一个无环的无向联通图。定义 xordist(u,v) 为节点 u 到 v 的简单路径上所有边权值的异或和。 有 q 次询问,每次给出 l r x,求 ∑rilxordist(i,x) 的值。 Input 测试…...
使用pnnx将Torch模型转换为ncnn
1. 引言 以往我们将Torch模型转换为ncnn模型,通常需经过Torch–>onnx,onnx–>ncnn两个过程。但经常会出现某些算子不支持的问题。 ncnn作者针对该问题,直接开发一个Torch直接转换ncnn模型的工具 (PNNX),以下为相关介绍及使…...
linux卸载小皮面板phpstudy教程
千万不要直接删文件夹! 千万不要直接删文件夹! 千万不要直接删文件夹! 我就是按照网上搜索的教程,直接删了,然后 系统就不停的崩溃 生成这种文件: -rw------- 1 root root 223M Dec 28 22:36…...
【萤火虫系列教程】1/5-Adobe Firefly 注册账号
001-Adobe Firefly 注册账号 AI时代如火如荼,Adobe也不甘落后,于今年3月份发布AI创意生成工具Firefly(中文翻译:萤火虫) Adobe Firefly简介 Adobe Firefly的官方介绍为:Firefly是Adobe产品中新的创意生成…...
【docker】Dockerfile 指令详解
一、Dockerfile 指令详解 Dockerfile是一个用于编写docker镜像生成过程的文件,其有特定的语法。Dockerfile的基本指令有十三个,分别是:FROM、MAINTAINER、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、USER、WORKDIR、ONBUILD。 …...
内存管理机制
内存管理机制与内存映射相关。 一、C与C 之所以将C与C放在一起是因为C是C的超集; 但是C是面向过程语言,C是面向对象的语言; C与C都可以使用malloc、calloc、realloc来申请内存空间; 其中void* malloc(size_t size)是在内存的动态…...
Jenkins工具使用
学习目录: 1、jenkins的安装 2、junkins的常规使用 3、jenkins在接口自动化测试实践 具体内容: 1、jenkins的安装 安装包下载:推荐Index of /jenkins/war/latest/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,…...
SpringBoot从配置文件中获取属性的方法
方式一:Value 基本类型属性注入,直接在字段上添加Value("${xxx.xxx}")即可.注意这里用的是$,而不是#,Value注入的属性,一般其他属性没有关联关系。 配置文件 user:name: Manaphyage: 19sex: m…...
oracle物化视图
物化视图定义 视图是一个虚拟表(也可以认为是一条语句),基于它创建时指定的查询语句返回的结果集,每次访问它都会导致这个查询语句被执行一次,为了避免每次访问都执行这个查询,可以将这个查询结果集存储到…...
基于ssm校园线上订餐系统的设计与实现论文
摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…...
鸿蒙南向开发—OpenHarmony技术编译构建框架
概述 OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能: 以部件为最小粒度拼装产品和独立编译。支持轻量、小型、标准三种系…...
Android Jetpack学习系列——Navigation
写在前面 Google在2018年就推出了Jetpack组件库,但是直到今天我才给重视起来,这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里,我一直在尝试做一套自己的组件库,帮助自己快速开发,虽然也听说过Jetpack&#…...
编程语言的新趋势
随着科技的飞速发展,IT行业经历了巨大的变革,其中编程语言作为技术生态的核心要素,其演变趋势对整个行业影响深远。从过去到现在,再到未来,编程语言的发展都呈现出明显的时代特征。本文将探讨当前IT行业的现状…...
C++:类和对象(2)
目录 1.strcut和class的区别 2.将成员属性设置为私有 3.对象的初始化和清理 3.1 构造函数和析构函数 3.1.1 构造函数语法 3.1.2 析构函数语法 3.1.3 检验 3.2 构造函数的分类和调用 3.3 拷贝构造函数调用 1.strcut和class的区别 struct和class的唯一区别在于默认的访问…...
【React系列】网络框架axios库的使用
本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. axios库的基本使用 1.1. 网络请求的选择 目前前端中发送网络请求的方式有很多种: 选择一:传统的Aj…...
pygame学习(二)——绘制线条、圆、矩形等图案
导语 pygame是一个跨平台Python库(pygame news),专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生,提供图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模…...
TCL学习笔记(持续更新)
前言: TCL(tool common language)是一种通用工具语言,很多eda tool都支持tcl,学习了解一些tcl基本语法还是很有必要的。 1:基础概念 解释器: #!/usr/bin/tclsh 打印: puts -> p…...
Xpath的问题:为什么在DOM中确定存在(可见)的元素,用//表达式匹配不到(附解决办法)
今天遇到一个很有意思的问题,我的爬取的目标页面上有时会出现一个弹窗,它挡住我点击其它按钮了,我想找到它的关闭按钮,自动点击一下关闭掉,本来是很简单的事情,但偏偏出问题了,DOM中看到的html是…...
有没有游泳可以戴的耳机?游泳耳机入耳式好,还是骨传导好
游泳是一项既能锻炼身体又能让人放松心情的运动。我们知道,音乐能够为我们的水上时光增添更多的乐趣。那么,在众多游泳耳机中,如何选择一款既适合自己的需求又具备良好性能的产品呢? 首先,我们要了解的是,…...
【绘图软件】自用安装教程
链接:https://pan.baidu.com/s/17r9Pr460FzkULU7fTr91_w?pwdftv7 提取码:ftv7 --来自百度网盘超级会员V6的分享解压并且右键打开set up 解压crack软件前需要退出杀毒软件, 关闭实时保护 域网络关闭,专用网络关闭࿰…...
AIGC时代-GPT-4和DALL·E 3的结合
在当今这个快速发展的数字时代,人工智能(AI)已经成为了我们生活中不可或缺的一部分。从简单的自动化任务到复杂的决策制定,AI的应用范围日益扩大。而在这个广阔的领域中,有两个特别引人注目的名字:GPT-4和D…...
springBoot集成RabbitMQ实现(直连模式\路由模式\广播模式\主题模式)的消息发送和接收
该项目介绍了springboot如何集成rabbitMQ消息中间件,实现(直连模式\路由模式\广播模式\主题模式)的消息发送和接收 pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId...
淮滨网站建设公司/seo sem是指什么意思
让我们看一下ES2017中引入的一些新语法,以帮助组织有关promise的代码。 在许多情况下,这种新语法(即async和await关键字)将帮助您编写更具可读性和可维护性的异步代码,但这并非没有缺点。 我们将首先研究如何使用async…...
浙江华临建设集团有限公司网站/seo行业网
天龙八部(武侠世界)的源码很可能是天龙八部代码流出后改写的,因为在看了代码中可以找到一些证据,整个客户端分为:一个是编辑器,一个是客户端,采用OGREcegui自写的简单的物理碰撞检测FMOD自写的网络库。 服务器端代码目…...
直接在原备案号下增加新网站/营销网
有没有发现,最近学Python的程序员越来越多了,不少人开始把Python当做第一语言来学习。但结合我最近这些年Python的学习、开发经验,发现超90%的人在初学Python时都可能会遇到下面这些问题: 应用方向太多了,完全不知道怎…...
网站被收录后又被提出了/东莞网站建设市场
工欲善其事,必先利其器。职场上亦是如此。Excel报表想要做得完美,首先肯定Excel要精通。做一份Excel报表,如果涉及到金额,当金额比较大,单位到底是用元还是万元,经常是大家纠结的一个问题。我们今天就来介绍…...
自己做的个人网站无法备案/如何做好平台推广
1234567891011121314151617181920212223# K近邻,适用于小型数据集,是很好的基准模型,容易解释from sklearn.neighbors import KNeighborsClassifier# 线性模型,非常可靠的首选算法,适用于很大的数据集,也适…...
网站怎么做全屏滚动/网络优化工程师吃香吗
一、标准制修订 2020年,完成标准制修订数量418项,较上年增加47项。其中,国家标准31项,较上年减少7项;行业标准103项,较上年增加6项;地方标准204项,较上年增加39项;团体标…...