Java实现邮件发送

news/2024/5/9 6:22:36/文章来源:https://www.cnblogs.com/jmsstudy/p/16829592.html

这里我们以QQ邮箱为例。

一、导入依赖:

    <dependencies><!-- https://mvnrepository.com/artifact/javax.activation/activation --><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><!-- https://mvnrepository.com/artifact/javax.mail/mail --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency></dependencies>

二、设置自己的QQ邮箱

 

 开启以上两项服务。

三、具体实现

import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;public class SendEmail {/* addressee:收件人邮箱*title:邮件标题标题*content:邮件内容*/public static void send(String addressee, String title, String content) throws Exception {Properties prop = new Properties();prop.setProperty("mail.host", "smtp.qq.com");//邮件服务器:QQprop.setProperty("mail.transport.protocol", "smtp");//邮件发送协议:smtpprop.setProperty("mail.smtp.auth", "true");//需要验证用户名和密码//QQ邮箱,还需要设置SSL加密MailSSLSocketFactory factory = new MailSSLSocketFactory();factory.setTrustAllHosts(true);prop.put("maim.smtp.ssl.enable", "true");prop.put("maim.smtp.ssl.socketFactory", factory);//javaMail发送email的五个步骤//1.定义一个整个应用环境需要的session对象Session session = Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("自己的邮箱", "授权码");}});//开启session的debug模式session.setDebug(true);//2.通过session得到transport对象Transport transport = session.getTransport();//3.使用邮箱用户名和授权码连接上服务器transport.connect("smtp.qq.com", "自己的邮箱", 授权码");//4.创建邮件//创建邮件对象MimeMessage message = new MimeMessage(session);//发邮件人message.setFrom(new InternetAddress("自己的邮箱"));//收件人 可以群发setRecipientsmessage.setRecipient(Message.RecipientType.TO, new InternetAddress(addressee));//邮件标题
        message.setSubject(title);//邮件内容,前内容,后格式message.setContent(content, "text/html;charset=UTF-8");//5.发送邮件
        transport.sendMessage(message, message.getAllRecipients());//6.关闭连接
        transport.close();}
}

 

 

(本文仅作个人学习记录用,如有纰漏敬请指正)

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

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

相关文章

联邦学习:联邦异构知识图谱划分

在联邦场景下,C个知识图谱位于不同的客户端上。知识图谱拥的实体集合之间可能会存在重叠,而其关系集合和元组集合之间则不会重叠。我们联系一下现实场景看这是合理的,比如在不同客户端对应不同银行的情况下,由于不同银行都有着自己的业务流程,所以关系集合不重叠。本文我们…

如何给PDF文件添加水印?PDF免费添加水印教程来了

有时候&#xff0c;为了不让别人盗用我们PDF文件里面的内容或图片&#xff0c;或者是出于宣传产品的目的&#xff0c;我们经常会需要给自己的PDF文件添加各种类型的水印&#xff0c;那你们知道如何给PDF文件添加水印吗&#xff1f;下面我们就来看看如何给PDF文件添加水印&#…

瞄准五金行业采购痛难点,智慧采购管理系统实现业务流程数据化,提高采购效率

五金行业采购一直是传统企业采购的软肋和头痛环节&#xff0c;无论从人力成本&#xff0c;物料成本&#xff0c;财务监管成本&#xff0c;物流成本等都存在一个整合服务需求&#xff0c;同时&#xff0c;传统五金行业采购难的问题&#xff0c;也一直制约着行业发展&#xff0c;…

股指期货高手陈(股指期货第一人)

​ 什么是股指期货&#xff0c;怎么玩&#xff1f;请教高手&#xff01; 股指期货&#xff08;Stock Index Futures&#xff0c;即股票价格指数期货&#xff0c;也可称为股价指数期货&#xff09;&#xff0c;是指以股价指数为标的资产的标准化期货合约。双方约定在未来某个特…

RK3399应用开发 | 移植libdrm到rk3399开发板(2.4.113)

一、下载源码 下载地址:https://dri.freedesktop.org/libdrm/。 这里我下载最新的2.4.113版本: wget https://dri.freedesktop.org/libdrm/libdrm-2.4.113.tar.xz解压: xz -d libdrm-2.4.113.tar.xz tar -xf libdrm-2.4.113.tar二、编译环境安装 1. 更新python ubuntu安…

【安信可NB-IoT模组EC系列应用笔记⑧】用NB-IoT模组EC系列了解LwM2M协议并接入云平台

文章目录前言一、测试准备1、硬件准备2、云平台准备二、云平台连接1.注册入网2.读取IMSI及IMEI3.利用IMSI及IMEI创建设备4.LwM2M连接云平台设备三、 数据互交1.ATMIPLNOTIFY 通知属性变化2.ATMIPLREADRSP 返回读取结果3.ATMIPLWRITERSP 发送写入结果4.ATMIPLEXECUTERSP 发送执行…

半乳糖-人血清白蛋白 Gal-HSA,Gal-PEG-HSA 半乳糖修饰人血清白蛋白

产品名称&#xff1a;半乳糖修饰人血清白蛋白 Gal-HSA 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 温馨提醒&#xff1a;仅供科研&#xff0c;不能用于人体…

supervisor管理prometheus进程

一、supervisor简单介绍 二、supervisor安装 三、supervisor部署应用 四、supervisorctl常用指令 五、supervisor测试 一、supervisor简单介绍 1、 概述 supervisor是一个Python编写的进程管理工具&#xff0c;可以方便启动、重启、关闭、单个或多个进程&#xff0c;可以简…

中国数字视听行业全景调研与投资趋势预测报告

数字视听和视听技术的概念 传统视听技术既包括视觉技术&#xff0c;也包括听觉技术&#xff0c;即模拟信号&#xff0c;包括录音录像、摄影等。随着时代和科技的发展&#xff0c;先进的计算机技术在检察系统和办公业务中得到广泛应用&#xff0c;传统的视听技术也逐渐向数字化方…

硬件开发趋势与技术探索

LiveVideoStackCon 2022 音视频技术大会 北京站将于11月25日至26日在北京丽亭华苑酒店召开&#xff0c;本次大会将延续【音视频无限可能】的主题&#xff0c;邀请业内众多企业及专家学者&#xff0c;将他们在过去一年乃至更长时间里对音视频在更多领域和场景下应用的探索、在实…

CSS3 1 CSS3 响应式布局 1.3 Grid 布局

CSS3 文章目录CSS31 CSS3 响应式布局1.3 Grid 布局1.3.1 Grid 布局简介1.3.2 开启grid 布局1.3.3 排列元素1.3.4 对齐方式1 CSS3 响应式布局 1.3 Grid 布局 【【迄今为止最易懂】2分钟掌握 CSS Grid 布局】 https://www.bilibili.com/video/BV18p411A7JB?share_sourcecopy_w…

YOLOv5、v7改进之三十八:引入RepVGG模型结构

前 言&#xff1a;作为当前先进的深度学习目标检测算法YOLOv7&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章&#xff0c;将重点对YOLOv7的如何改进进行详…

【微服务】微服务万字实战,带你了解工程原理

微服务实战1、前期准备1.1 技术选型1.2 模块设计1.3 微服务调用2、创建父工程3、创建基础模块3.1 导入依赖3.2 创建实体类4、创建用户微服务4.1 创建shop-user模块4.2 用户微服务启动类4.3 创建配置文件5、创建商品微服务5.1 创建shop_product模块5.2 商品微服务启动类5.3 创建…

【自学CSS笔记第7篇】——CSS三大特征(这一篇就够了)

其实&#xff0c;我清楚的知道什么是对的什么是错的&#xff0c;什么该做什么不该做&#xff0c;然而懒惰的天性驱使我们每每做出错误的决定&#xff0c;结束后我又再一次重复着厌倦和懊恼。 目录 CSS的三大特性总览: 层叠性&#xff1a; 继承性&#xff1a; 优先级&#x…

链路状态路由协议 OSPF (二)

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.Router ID 1.什么是Router ID 2.获得Router ID方法 二.DR和…

Libevent库的学习

目录 Libevent 概述 Libevent 使用模型 使用Libevent的基本流程&#xff1a; libevent 的核心&#xff0c;event 事件 1. 创建一个事件event 2. 释放event_free 3. 注册event 4. 信号事件 5. 销毁event_base Libevent 结构图 使用libevent库去实现tcp服务器 Libev…

【目标检测】【边界框回归】Bounding-Box regression

最近开始看目标检测的论文&#xff0c;第一篇为R-CNN论文&#xff0c;是两阶段目标检测的开山奠基之作。论文中的损失函数包含了边界框回归&#xff0c;且在R-CNN论文里面有详细的介绍。 一、为什么要做边界框回归&#xff1f; 对于上图&#xff0c;绿色的框表示Ground Truth&…

【VIO】第2讲 基于优化的IMU

第2讲 基于优化的 IMU 与视觉信息融合 1.最小二乘问题求解 &#xff08;1&#xff09;最小二乘基础概念 ​ 1 定义&#xff1a;找到一个n维的变量 x∈Rnx \in R^nx∈Rn &#xff0c;使得损失函数 F(x)F(x)F(x) 取得局部最小值&#xff1a; F(x)12∑i1m(fi(x))2F(x) \frac{1…

Word控件Spire.Doc 【文本】教程(5) ;从 Word 文档中的文本框中提取文本

文本框的目的是允许用户输入程序要使用的文本信息。也可以从文本框中提取现有的文本信息。以下指南重点介绍如何通过Spire.Doc for .NET从 C# 中 Word 文档的文本框中提取文本。 Spire.Doc for.NET 最新下载&#xff08;qun:767755948&#xff09;https://www.evget.com/produ…

3、Java对象相关

目录JVM内存分配机制对象的创建对象大小与指针压缩java对象的指针压缩指针压缩的原因分代回收机制分代GC分类对象内存分配栈上分配逃逸分析标量替换标量与聚合量Eden区分配大对象分配老年代分配对象动态年龄判断老年代空间分配担保机制对象的内存布局对象的访问定位对象内存回收…