java 实现发送邮箱,复制即用,包含邮箱设置第三方登录授权码获取方法

 application.yml

spring:profiles:active: dev
#    active: test#邮件附件上传文件大小限制servlet:multipart:max-file-size: 50MB  #单个文件大小限制max-request-size: 100MB #总文件大小限制(允许存储文件的文件夹大小)mail:default-encoding: UTF-8host: smtp.qq.comusername: xxxxxxx@qq.compassword: xxxxxxxxx#邮箱设置第三方登录授权码test-connection: falseproperties:mail.smtp.auth: true

 邮箱设置第三方登录授权码获取

 邮箱设置第三方登录授权码获取icon-default.png?t=N7T8https://blog.csdn.net/xnian_/article/details/134515274?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134515274%22%2C%22source%22%3A%22xnian_%22%7D

package com.cloud.xxx.utils;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.security.Security;
import java.util.Date;
import java.util.Properties;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;@Slf4j
@Service
public class MailServiceUtil {@Resourceprivate JavaMailSender javaMailSender;/*** 发件人的邮箱地址<br>* 即我们配置的邮件服务的邮箱*/@Value("${spring.mail.username}")private String serverMail;@Value("${spring.mail.password}")private String password;@Value("${spring.mail.host}")private String host;/*** 发送邮件** @param toUser  收件人邮件地址* @param subject 标题* @param text    正文*/public boolean sendMail(String toUser, String subject, String text) {try {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(serverMail);helper.setTo(toUser.split(","));helper.setSubject(subject);helper.setText(text, true);javaMailSender.send(message);log.info("发送邮件to:{},主题:{},内容:{}", toUser, subject, text);} catch (Exception e) {log.error("sendMail ", e);return Boolean.FALSE;}return Boolean.TRUE;}/*** 使用加密的方式,利用 587 端口进行传输邮件,开启ssl* @param to    收件人邮箱* @param message    邮件正文* @param title 邮件标题*/public  boolean sendMail587(String to, String title, String message) {try {Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";//设置邮件会话参数Properties props = new Properties();//邮箱的发送服务器地址props.setProperty("mail.smtp.host", host);props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);props.setProperty("mail.smtp.socketFactory.fallback", "false");//邮箱发送服务器端口,这里设置为 587 端口props.setProperty("mail.smtp.port", "587");props.setProperty("mail.smtp.socketFactory.port", "587");props.put("mail.smtp.auth", "true");//获取到邮箱会话,利用匿名内部类的方式,将发送者邮箱用户名和密码授权给jvmSession session = Session.getDefaultInstance(props, new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(serverMail, password);}});//通过会话,得到一个邮件,用于发送Message msg = new MimeMessage(session);//设置发件人msg.setFrom(new InternetAddress(serverMail));//设置收件人,to为收件人,cc为抄送,bcc为密送msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
//            msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, false));
//            msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to, false));// 设置邮件标题msg.setSubject(title);//设置发送的日期msg.setSentDate(new Date());/*//设置邮件消息msg.setText(message);*/// 设置邮件的内容体msg.setContent(message, "text/html;charset=UTF-8");//调用Transport的send方法去发送邮件Transport.send(msg);} catch (Exception e) {log.error("sendMail ", e);return Boolean.FALSE;}return Boolean.TRUE;}
}

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

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

相关文章

【开题报告】基于SpringBoot的机车模型交流平台的设计与实现

1.研究背景 机车模型是一种受到广泛关注的模型制作爱好&#xff0c;它涵盖了机车模型的收藏、展示、制作等多个方面。然而&#xff0c;由于机车模型爱好者的数量较少&#xff0c;且分散在不同的地区和社区&#xff0c;导致他们难以进行互动和资源共享。因此&#xff0c;需要一…

COBOL排序问题

*SORT排序文件文件超长&#xff0c;将主键保存在临时文件里&#xff0c;超长的数据从数组里面去检索获取。 IDENTIFICATION DIVISION. PROGRAM-ID. TEST002. * ENVIRONMENT DIVISION. CONFIGURATION SECTION. …

YOLOv5改进: Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 💡💡💡Yolov5/Yolov7魔术师,独家首发创新(原创),适用于…

安卓毕业设计基于安卓android微信小程序的培训机构系统

项目介绍 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对培训机构管理系统进行需求分析&#xff0c;得出培训机构管理系统主要功能。接着对培训机构管理系统 进行…

基于Python实现的一个命令行文本计数统计程序,可统计纯英文txt文本中的字符数,单词数,句子数,Python文件行数

项目简介 这是一个用 Python 编写的命令行文本计数统计程序。 基础功能&#xff1a;能正确统计导入的 纯英文txt文本 中的 字符数&#xff0c;单词数&#xff0c;句子数。扩展功能&#xff1a;能正确统计导入的 Python 文件中的代码行数&#xff0c;注释行数&#xff0c;空白…

如何使用VisualSVN在Windows系统上设置SVN服务器并公网远程访问

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学…

seaTunnel使用

如何源码编译seaTunnel 参考Set Up Develop Environment 编译前准备 下列软件需要提前安装好 GitJava ( JDK8/JDK11) 并设置JAVA_HOME 环境变量Scala (只支持 scala 2.11.12 )JetBrains IDEA . 下载源码并编译 git clone gitgithub.com:apache/seatunnel.git cd seatunne…

vivado联合modelsim测试覆盖率

&#xff08;1&#xff09;配置环境 安装modelsim和vivado。点击vivado菜单栏中的tools&#xff0c;在下拉选项中选择compile simulation libraries。simulator选项选择&#xff1a;modelsim simulator。compile library location表示编译库存放的路径。simulator executable p…

java.sql.SQLException: Connection has already been closed

背景&#xff1a; 通过一个接口触发后台数据库的批量更新操作&#xff0c;原本只是一个触发动作&#xff0c;不需要返回值&#xff0c;因此没有关心出现的http超时问题。后面发现批量更新任务中断了&#xff0c;查日志发现了Connection has already been closed报错。 具体的…

【网络奇缘】- 计算机网络|性能指标|体系结构

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 温故而知新 计算机网络性能指标 时延 时延带宽积 往返时延RTT 访问百度​编辑 访问b站 访问谷歌 …

使用 .toISOString() 方法生成当前时间的ISO格式字符串,解决UTC时区差问题

方法分析&#xff1a; 日常开发中&#xff0c;有时我们需要向后端传递的时间值可能并非一个时间对象&#xff0c;而是字符串格式。 例 1&#xff1a;[2023-08-16T08:07:25.577Z] 但是我们通过 new Date() 之后直接使用 .toString() 方法得到的却并非这种格式。 例 2&#xff1…

MAX/MSP SDK学习08:设置入口的冷热标签

1. 默认所有的入口会显示为热标签&#xff08;红色&#xff09;&#xff1b; 2. 若想让所有非最左入口都显示为冷标签&#xff0c;则需在ext_main函数中添加内置函数stdinletinfo&#xff1a; class_addmethod(c, (method)stdinletinfo, "inletinfo", A_CANT, 0); 3…

【从零开始学习Linux】一文带你了解Shell外壳及用户权限(一)

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;Linux入门 &#x1f52d;【从零开始学习Linux】系列均属于Linux入门&#xff0c;主要包含Linux操作系统下的指令、操作、权限以及开发工具&a…

@DS动态切换数据源

1.DS概述 DS是自定义注解&#xff0c;可以作用于方法或类上&#xff0c;用于切换数据源。当注解添加到类上时&#xff0c;意味着此类里的方法都使用此数据源&#xff1b;当注解添加到方法上时&#xff0c;意味着此方法上使用的数据源优先级高于其他一切配置。 2.DS使用 2.1 导…

基于.net framework4.0框架下winform项目实现寄宿式web api

首先Nuget中下载包&#xff1a;Microsoft.AspNet.WebApi.SelfHost&#xff0c;如下&#xff1a; 注意版本哦&#xff0c;最高版本只能4.0.30506能用。 1.配置路由 public static class WebApiConfig{public static void Register(this HttpSelfHostConfiguration config){// …

Axure插件浏览器一键安装:轻松享受高效工作!

Axure插件对原型设计师很熟悉&#xff0c;但由于Axure插件是在国外开发的&#xff0c;所以在安装Axure插件时不仅需要下载中文包&#xff0c;激活步骤也比较繁琐&#xff0c;有时Axure插件与计算机系统不匹配&#xff0c;Axure插件格式不兼容。本文将详细介绍如何安装Axure插件…

uniapp开发小程序-pc端小程序下载文件

fileName包含文件名后缀名&#xff0c;比如test.png这种格式 api.DownloadTmtFile后端接口返回的是文件的二进制流 值得注意的是&#xff0c;微信开发者工具中是测试不了wx.saveFileToDisk的&#xff0c;需要真机或者体验版测试 handleDownload(fileName) {if (!fileName) retu…

CCFCSP试题编号:201912-2试题名称:回收站选址

这题只要比较坐标的四周&#xff0c;然后计数就可以了。 #include <iostream> using namespace std;int main() {int n;cin >> n;int arr[1005][2] { 0 };int res[5] { 0 };int up 0;int down 0;int left 0;int right 0;int score 0;for (int i 0; i <…

QT 在Windows下实现ping功能(ICMP)

前言 很多时候&#xff0c;我们可能会图省事直接调用系统中的ping命令&#xff0c;但这是很不科学的~ 废话不多说&#xff0c;直接上代码.. .pro文件 在.pro文件末尾添加一行&#xff1a; LIBS -liphlpapi -lws2_32 .h文件 在.h文件中加入&#xff1a; #include <Q…

23款奔驰GLC260L升级原厂360全景影像 高清环绕

本次星骏汇小许介绍的是23款奔驰GLC260L升级原厂360全景影像&#xff0c;上帝视角看清车辆周围环境&#xff0c;更轻松驾驶 升级360全景影像系统共有前后左右4个摄像头&#xff0c;分别在车头&#xff0c;车尾&#xff0c;以及两边反光镜下各一个&#xff0c;分别用来采集车头&…