Java邮件客户端设计实现:使用JavaMail向QQ邮箱发邮件


目录

JavaMail

用JavaMail向qq邮箱发消息

▐ 授权码的获取 


JavaMail

JavaMail 是一个用于发送和接收电子邮件的 Java API。它提供了一个平台无关和协议无关的框架,允许开发人员通过标准电子邮件协议(如 SMTP、POP3 和 IMAP)来创建、发送和读取电子邮件。以下是 JavaMail 的一些关键概念和功能介绍:

▐ 基本概念

  • Session:JavaMail 的 Session 对象表示邮件会话。它存储了配置信息,如邮件服务器地址和认证信息。
  • StoreStore 对象用于与邮件服务器通信,特别是接收邮件时。它支持协议如 IMAP 和 POP3。
  • TransportTransport 对象用于发送邮件。它支持协议如 SMTP。
  • MessageMessage 对象代表一封电子邮件。JavaMail 提供了 MimeMessage 类,用于创建和解析 MIME 类型的电子邮件。
  • FolderFolder 对象代表邮件文件夹,如收件箱、发件箱、草稿等。通过 Folder 对象可以操作邮件。

用JavaMail向qq邮箱发消息

发送电子邮件的基本步骤包括:

  1. 创建一个 Session 对象。
  2. 使用 MimeMessage 创建电子邮件内容。
  3. 使用 Transport 对象发送邮件。

示例代码:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;public class SendEmail {public static void main(String[] args) {// 配置邮件服务器属性Properties props = new Properties();props.put("mail.smtp.host", "smtp.qq.com");props.put("mail.smtp.ssl.protocols", "TLSv1.2");props.put("mail.smtp.port", "587"); // 或者使用 465 端口,并启用 SSLprops.put("mail.smtp.auth", "true");props.put("mail.smtp.starttls.enable", "true"); // 启用 TLS// QQ 邮箱账户信息final String username = "******@qq.com"; // 您的QQ邮箱final String password = "******"; // 您的QQ邮箱授权码// 创建会话Session session = Session.getInstance(props, new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);}});try {// 创建消息对象Message message = new MimeMessage(session);message.setFrom(new InternetAddress(username));message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("******@qq.com")); // 收件人邮箱地址message.setSubject("Test Email from QQ");message.setText("Hello, this is a test email sent from QQ Mail using JavaMail!");// 发送邮件Transport.send(message);System.out.println("Email sent successfully!");} catch (MessagingException e) {e.printStackTrace();}}
}

其中这一行代码尤为注意,在较高版本的jdk中必须要加上这段代码,笔者使用的是jdk17,需要显式指定ssl的版本号:

props.put("mail.smtp.ssl.protocols", "TLSv1.2");

▐ 授权码的获取 

在上文代码中,有一处需要获取qq邮箱的授权码

首先,打开你的个人qq邮箱,点击设置

然后,点击账户

然后下拉,找到服务,笔者这里是已经开启了服务,如果没有开启的话则需要先开启服务,然后按照官方的提示完成操作,最后获取验证码

在完成所有的配置后,就可以运行发送邮件了:




 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

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

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

相关文章

网络工程师---第四十六天

1、逻辑网络结构设计阶段中,要想实现核心层与汇聚层交换机全部互相连接,组网技术有哪些? 2、工作区子系统的通信布线规范有哪些? 3、综合布线中施工规范有哪些? 4、综合布线系统中核心机房通常包括哪些设备&#xff1f…

SpringBoot——整合拦截器(Interceptor)

目录 拦截器(Interceptor) 项目总结 新建一个SpringBoot项目​编辑 MyInterceptor自定义拦截器 InterceptorConfig配置类 InterceptorController控制器 SpringbootInterceptorApplication启动类 在开发SpringBoot项目时,开发人员经常需要…

SAP-FICO总账科目案例

1、资产科目 2、负债科目

计网期末复习指南(三):数据链路层(CRC冗余校验码计算、PPP协议、CSMA/CD协议、交换机的自学习能力、VLAN)

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 计网期末复习指南(一):计算…

iOS 通过PacketLogger 抓包蓝牙数据包

当使用iOS平台调试蓝牙外设时,需要抓取蓝牙数据包,那么如何获取iOS端设备与蓝牙设备之间通信的蓝牙数据包呢? 一、资料准备 1、苹果手机 2、Xcode开发工具 3、Apple开发者账户 二、环境搭建 2.1、手机环境搭建 手机浏览器访问地址&…

Meta的开源力作:Lexical框架,富文本的未来

引言 Lexical 是一个由 Facebook(现在称为 Meta)开源的可扩展 JavaScript Web 文本编辑器框架。 这个框架特别强调了三个核心特性:可靠性、可访问性以及高性能。 旨在为开发者创造最优的开发体验。 以下是 Lexical 框架的几个关键特点和能…

使用conda环境安装pythonocc-core

conda环境安装pythonocc库 基本环境 操作系统:Ubuntu 22.04 conda 23.11.0 安装pythonocc-core conda create --name pyocc python3.10 conda activate pyocc conda install -c conda-forge pythonocc-core7.8.1也可参考下面的官方地址 pythonocc-core 官方git地址 conda官…

苏宁电商数据揭秘:掌握苏宁API接口,一键解锁无限商机

苏宁API接口是一套开放的、基于HTTP协议的接口,它允许开发者通过编程方式访问苏宁平台上的商品、订单、用户等信息。这些接口支持多种数据格式,如JSON和XML,并提供了完善的错误处理和权限控制机制。 要使用苏宁API接口,首先需要在…

wireshark 二次开发

一、 Windows 准备 1、源代码下载 Git:https://github.com/wireshark/wireshark 2、 准备Visual C 要编译wireshark,开发电脑上应该安装了Visual Studio并包括了Visual C,请至少安装Visual Studio 2010以减少不必要的麻烦。 visual studio …

媳妇面试了一家公司,期望月薪20K,对方没多问就答应了,只要求3天内到岗,可我总觉得哪里不对劲。

“20k!明天就来上班吧!” 听到这句话,你会不会两眼放光,激动得差点跳起来? 朋友媳妇小丽,最近就经历了这样一场“梦幻面试”。然而,事情的发展却远没有想象中那么美好…… “这公司也太好了吧…

新闻发稿:14种新闻媒体推广中的成功案例-华媒舍

新闻媒体推广是企业宣传与推广的重要手段之一。通过合理选择和运用新闻媒体,企业可以有效地提升品牌知名度和影响力,吸引更多的目标受众。本文将介绍14种新闻媒体推广中的成功案例,通过这些案例的分享,希望能为企业在新闻媒体推广…

AWS EC2服务器开启root密码,SSH登录

1) EC2 Instance Connect连接,更改root密码 sudo passwd root 2)接着切换到切换到 root 身份,编辑 SSH 配置文件 $ sudo -i$ vi /etc/ssh/sshd_configPasswordAuthentication no,把 no 改成 yes #PermitRootLogin prohibit-passw…

论文降重技巧:AI工具如何助力论文原创性提升?

论文降重一直是困扰各界毕业生的“拦路虎”,还不容易熬过修改的苦,又要迎来降重的痛。 其实想要给论文降重达标,我有一些独家秘诀。话不多说直接上干货! 1、同义词改写(针对整段整句重复) 这是最靠谱也是…

动态规划1:1137. 第 N 个泰波那契数

动态规划解题步骤: 1.确定状态表示:dp[i]是什么 2.确定状态转移方程:dp[i]等于什么 3.初始化:确保状态转移方程不越界 4.确定填表顺序:根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接:1137…

Python管理PVE(Proxmox VE)云平台--节点资源统计2

一、前言 承接上文:Python管理PVE(Proxmox VE)云平台–节点资源统计 将cpu、内存、磁盘融入到一个脚本中,新增总资源占用计算模块,更直观的看出剩余未分配资源。 二、步骤 1.代码 # -*- coding: utf-8 -*- import o…

城市低空经济“链接力”指数报告(2024)

来源:城市进化论&火石创造 近期历史回顾:2024年NoETL开启自动化数据管理新时代白皮书.pdf 创新引领用户“换新生活”-从AWE2024看家电及消费电子行业发展趋势报告(精简版).pdf 2024智能网联汽车“车路云一体化”规模建设与应用…

3DMAX样条线轮廓修改器插件SplineOffset安装使用方法

3DMAX样条线轮廓修改器插件安装使用教程 3DMAX样条线轮廓插件SplineOffset是3dMax的一个修改器,它可以创建多个样条线克隆,并可以选择增量增加或减少偏移、平移和旋转。在许多方面,它类似于3dMax的内置阵列工具与样条线偏移功能相结合。 3DM…

Go 编程风格指南 - 最佳实践

Go 编程风格指南 - 最佳实践 原文:https://google.github.io/styleguide/go 概述 | 风格指南 | 风格决策 | 最佳实践 注意: 本文是 Google Go 风格 系列文档的一部分。本文档是 规范性(normative) 但不是强制规范(canonical),并且从属于Goo…

进入mysql报错:bash:/bin/mysql:没有那个文件或目录

问题分析: 有可能把/bin下面的mysql文件删除 解决方案: 卸载已安装MySQL,重新安装一遍 卸载步骤: 在CentOS系统中卸载MySQL可以通过以下步骤进行: 1、停止MySQL服务: sudo systemctl stop mysqld 2…

【GD32F303红枫派使用手册】第七节 TIMER-蜂鸣器PWM

7.1 实验内容 通过本实验主要学习以下内容: PWM输出功能实现; 定时器基本原理; 蜂鸣器驱动原理; 7.2 实验原理 7.2.1 蜂鸣器驱动原理 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用…