通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

这篇具有很好参考价值的文章主要介绍了通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

最近发现之前的老代码已经不能获取QQ邮箱的Clientkey,经过一番调试后发现QQ邮箱更新了获取的流程,所以决定重新发布一篇文章,废话不多,直接上教程,喜欢的朋友记得点赞加关注。

step 1

首先需要获取到 Qrsig 的值(流程已更改)

Request URL:

https://ssl.ptlogin2.qq.com/ptqrshow?appid=716027609&e=2&l=M&s=3&d=72&v=4&t=0.1957881457063695&daid=383&pt_3rd_aid=102013353&u1=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump

返回数据在浏览器 Set-Cookie 中。

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

实现代码:

		// 初始化URL
		URL_COMPONENTSA crackedURL = { 0 };
 
		char URL_STRING[] = "https://ssl.ptlogin2.qq.com/ptqrshow?appid=716027609&e=2&l=M&s=3&d=72&v=4&t=0.7009436033346066&daid=383&pt_3rd_aid=102013353&u1=https://graph.qq.com/oauth2.0/login_jump";
 
		char szHostName[128] = { 0 };
		char szUrlPath[256] = { 0 };
 
		crackedURL.dwStructSize = sizeof(URL_COMPONENTSA);
		crackedURL.lpszHostName = szHostName;
		crackedURL.dwHostNameLength = ARRAYSIZE(szHostName);
		crackedURL.lpszUrlPath = szUrlPath;
		crackedURL.dwUrlPathLength = ARRAYSIZE(szUrlPath);
		InternetCrackUrlA(URL_STRING, (DWORD)strlen(URL_STRING), 0, &crackedURL);
 
		// 初始化首次会话
		HINTERNET hInternet = InternetOpenA("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
		if (hInternet != NULL){
			HINTERNET hHttpSession = InternetConnectA(hInternet, crackedURL.lpszHostName, INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
			if (hHttpSession != NULL){
				HINTERNET hHttpRequest = HttpOpenRequestA(hHttpSession, "GET", crackedURL.lpszUrlPath, NULL, "", NULL, INTERNET_FLAG_SECURE, 0);
				if (hHttpRequest != NULL){
					BOOL bRet = FALSE;
					// 发送HTTP请求
					bRet = HttpSendRequest(hHttpRequest, NULL, 0, NULL, 0);
					if (bRet){
						// 查询HTTP请求状态
						DWORD dwRetCode = 0;
						DWORD dwSizeOfRq = sizeof(DWORD);
						bRet = HttpQueryInfo(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL);
						if (bRet){
							// 读取整个Headers
							char lpHeaderBuffer[1024] = { 0 };
							dwSizeOfRq = 1024;
							HttpQueryInfo(hHttpRequest, HTTP_QUERY_RAW_HEADERS, lpHeaderBuffer, &dwSizeOfRq, NULL);
							// 从Cookie中提取qrsig的值
							char* qrsig = lpHeaderBuffer + dwSizeOfRq;
							while (qrsig != lpHeaderBuffer){
								if (strstr(qrsig, "qrsig=")){
									// 退出之前,修正偏移
									qrsig += sizeof("qrsig");
									char* pEndBuffer = strstr(qrsig, ";");
									*pEndBuffer = 0;
									break;
								}
								qrsig--;
							}
 
							// 关闭句柄
							InternetCloseHandle(hHttpRequest);
							InternetCloseHandle(hHttpSession);
 
							cout << "[+] qrsig:" << qrsig << "\r\n" << endl;
					}
				}
			}
		}

效果演示:

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

step 2

利用 Qrsig 获取 pt_local_token

Request URL:

https://xui.ptlogin2.qq.com/cgi-bin/xlogin?target=self&appid=522005705&daid=4&s_url=https%3A%2F%2Fwx.mail.qq.com%2Flist%2Freadtemplate%3Fname%3Dlogin_jump.html%26target%3D&style=25&low_login=1&proxy_url=https://mail.qq.com/proxy.html&need_qr=0&hide_border=1&border_radius=0&self_regurl=https%3A%2F%2Freg.mail.qq.com&app_id=11005?t=regist&pt_feedback_link=http://support.qq.com/discuss/350_1.shtml&css=https://res.mail.qq.com/zh_CN/htmledition/style/ptlogin_input_for_xmail.css&enable_qlogin=0

请求标头带入 Cookie(Qrsig 的值),返回数据在浏览器 Set-Cookie 中。

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

**实现代码: **

							/* 第二次建立会话 */
 
							// 初始化URL参数
							char lpszUrlPath_2[1024] = { 0 };
							strcpy(lpszUrlPath_2, "/cgi-bin/xlogin?target=self&appid=522005705&daid=4&s_url=https://wx.mail.qq.com/list/readtemplate?name=login_jump.html&target=&style=25&low_login=1&proxy_url=https://mail.qq.com/proxy.html&need_qr=0&hide_border=1&border_radius=0&self_regurl=https://reg.mail.qq.com&app_id=11005?t=regist&pt_feedback_link=http://support.qq.com/discuss/350_1.shtml&css=https://res.mail.qq.com/zh_CN/htmledition/style/ptlogin_input_for_xmail.css&enable_qlogin=0");
 
							// 初始化会话
							hHttpSession = InternetConnectA(hInternet, "xui.ptlogin2.qq.com", 443, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
							if (NULL != hHttpSession)
							{
								hHttpRequest = HttpOpenRequestA(hHttpSession, "GET", lpszUrlPath_2, NULL, "", NULL, INTERNET_FLAG_SECURE, 0);
								if (NULL != hHttpRequest)
								{
									// 请求标头添加 Cookie 
									char lpCookie[256] = { 0 };
									strcpy(lpCookie, "Cookie: qrsig=");
									strcat(lpCookie, qrsig);
									strcat(lpCookie, "\r\n");
 
									HttpAddRequestHeaders(hHttpRequest, lpCookie, -1L, HTTP_ADDREQ_FLAG_ADD);
 
									bRet = HttpSendRequestA(hHttpRequest, NULL, NULL, NULL, 0);
									if (bRet)
									{
										// 查询HTTP请求状态
										dwRetCode = 0;
										dwSizeOfRq = sizeof(DWORD);
										bRet = HttpQueryInfo(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL);
										if (bRet)
										{
											// 读取整个Headers
											ZeroMemory(lpHeaderBuffer, 1024);
											dwSizeOfRq = 1024;
											HttpQueryInfo(hHttpRequest, HTTP_QUERY_RAW_HEADERS, lpHeaderBuffer, &dwSizeOfRq, NULL);
											// 从Cookie中提取pt_local_token的值
											char* pt_local_token = lpHeaderBuffer + dwSizeOfRq;
											while (pt_local_token != lpHeaderBuffer) {
												if (strstr(pt_local_token, "pt_local_token=")) {
													// 退出之前,修正偏移
													pt_local_token += sizeof("pt_local_token");
													char* pEndBuffer = strstr(pt_local_token, ";");
													*pEndBuffer = 0;
													break;
												}
												pt_local_token--;
											}
 
											// 释放资源,注意关闭句柄时按相反的顺序
											InternetCloseHandle(hHttpRequest);
											InternetCloseHandle(hHttpSession);
 
											cout << "[+] pt_local_token:" << pt_local_token << "\r\n" << endl;
 
											
										}
									}
								}
							}

效果演示:

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

step 3

利用 pt_local_token 获取本地已登录的 QQ Uin。

Request URL:

https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.7544340024793896&pt_local_tk=pt_local_tk

返回在浏览器中的 Response (网页数据),请求标头带入 Referer。

Referer: https://xui.ptlogin2.qq.com/

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

实现代码:

                                            /* 第三次建立会话 */
 
											// 初始化URL参数
											char lpszUrlPath_3[1024] = { 0 };
											strcpy(lpszUrlPath_3, "/pt_get_uins?callback=ptui_getuins_CB&r=0.");
											strcat(lpszUrlPath_3, szRandNum);			// 追加16位随机数
											strcat(lpszUrlPath_3, "&pt_local_tk=");
											strcat(lpszUrlPath_3, pt_local_token);	// 追加pt_local_token
 
											//cout << "[+] lpszUrlPath_3:" << lpszUrlPath_3 << "\r\n" << endl;
 
											// 初始化会话
											hHttpSession = InternetConnectA(hInternet, "localhost.ptlogin2.qq.com", 4301, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
											if (NULL != hHttpSession)
											{
												hHttpRequest = HttpOpenRequestA(hHttpSession, "GET", lpszUrlPath_3, NULL, "", NULL, INTERNET_FLAG_SECURE, 0);
												if (NULL != hHttpRequest)
												{
													// 请求标头添加 Referer 
													char lpReferer[256] = { 0 };
													strcpy(lpReferer, "Referer: https://xui.ptlogin2.qq.com/");
													strcat(lpReferer, "\r\n");
 
													HttpAddRequestHeaders(hHttpRequest, lpReferer, -1L, HTTP_ADDREQ_FLAG_ADD);
 
													bRet = HttpSendRequestA(hHttpRequest, NULL, NULL, NULL, 0);
													if (bRet)
													{
														// 查询HTTP请求状态
														dwRetCode = 0;
														dwSizeOfRq = sizeof(DWORD);
														bRet = HttpQueryInfo(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL);
														if (bRet)
														{
															// 获取返回数据的大小
															DWORD dwNumberOfBytesAvailable = 0;
															bRet = InternetQueryDataAvailable(hHttpRequest, &dwNumberOfBytesAvailable, NULL, NULL);
															if (bRet)
															{
																// 读取网页内容
																char* lpBuffer = new char[dwNumberOfBytesAvailable + 1]();
																bRet = InternetReadFile(hHttpRequest, lpBuffer, dwNumberOfBytesAvailable, &dwNumberOfBytesAvailable);
																if (bRet)
																{
																	// 从内容中提取已登陆QQ账号
																	char* uin = lpBuffer + dwNumberOfBytesAvailable;
																	while (uin != lpBuffer)
																	{
																		if (strstr(uin, "\"account\":"))
																		{
																			// 退出之前,修正偏移
																			uin += sizeof("\"account\":") - 1;
																			char* pEndBuffer = strstr(uin, "}");
																			*pEndBuffer = 0;
																			break;
																		}
																		uin--;
																	}
 
																	// 释放资源,注意关闭句柄时按相反的顺序
																	InternetCloseHandle(hHttpRequest);
																	InternetCloseHandle(hHttpSession);
 
																	cout << "[+] uin:" << uin << "\r\n" << endl;
 
																	
																}
															}
														}
													}
												}
											}

效果演示:

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

step 4

利用 QQuin 与 pt_local_token 获取 QQClientkey。

Request URL:

https://localhost.ptlogin2.qq.com:4301/pt_get_st?clientuin=QQUin&r=0.8134579633763475&pt_local_tk=pt_local_token&callback=__jp0

请求标头带上 Referer

Referer: https://xui.ptlogin2.qq.com/

返回数据在浏览器 Set-cookie 中。

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

实现代码:

/* 第四次会话 */
 
																	// 初始化URL参数
																	char lpszUrlPath_4[1024] = { 0 };
																	strcpy(lpszUrlPath_4, "/pt_get_st?clientuin=");
																	strcat(lpszUrlPath_4, uin);
																	strcat(lpszUrlPath_4, "&r=0.");
																	strcat(lpszUrlPath_4, szRandNum);
																	strcat(lpszUrlPath_4, "&pt_local_tk=");
																	strcat(lpszUrlPath_4, pt_local_token);
																	strcat(lpszUrlPath_4, "&callback=__jp0");
 
																	cout << "[+] lpszUrlPath_4:" << lpszUrlPath_4 << "\r\n" << endl;
 
																	// 发送HTTPS请求
																	hHttpSession = InternetConnectA(hInternet, "localhost.ptlogin2.qq.com", 4301, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
																	if (NULL != hHttpSession)
																	{
																		hHttpRequest = HttpOpenRequestA(hHttpSession, "GET", lpszUrlPath_4, NULL, "", NULL, INTERNET_FLAG_SECURE, 0);
																		if (NULL != hHttpRequest)
																		{
																			// 请求标头添加 Referer 
																			char lpReferer_2[256] = { 0 };
																			strcpy(lpReferer_2, "Referer: https://xui.ptlogin2.qq.com/");
																			strcat(lpReferer_2, "\r\n");
 
																			HttpAddRequestHeaders(hHttpRequest, lpReferer_2, -1L, HTTP_ADDREQ_FLAG_ADD);
 
																			bRet = HttpSendRequestA(hHttpRequest, NULL, NULL, NULL, 0);
																			if (bRet)
																			{
																				// 查询HTTP请求状态
																				dwRetCode = 0;
																				dwSizeOfRq = sizeof(DWORD);
																				bRet = HttpQueryInfoA(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL);
																				if (bRet)
																				{
																					// 读取整个Headers
																					ZeroMemory(lpHeaderBuffer, 1024);
																					dwSizeOfRq = 1024;
																					bRet = HttpQueryInfoA(hHttpRequest, HTTP_QUERY_RAW_HEADERS, lpHeaderBuffer, &dwSizeOfRq, NULL);
																					if (bRet)
																					{
																						// 从Cookie中提取ClientKey的值
																						char* clientkey = lpHeaderBuffer + dwSizeOfRq;
																						while (clientkey != lpHeaderBuffer)
																						{
																							if (strstr(clientkey, "clientkey="))
																							{
																								// 退出之前,修正偏移
																								clientkey += sizeof("clientkey");
																								char* pEndBuffer = strstr(clientkey, ";");
																								*pEndBuffer = 0;
																								break;
																							}
																							clientkey--;
																						}
 
																						// 释放资源,注意关闭句柄时按相反的顺序
																						InternetCloseHandle(hHttpRequest);
																						InternetCloseHandle(hHttpSession);
 
																						cout << "[+] clientkey:" << clientkey << "\r\n" << endl;
																					}
																				}
																			}
																		}
																	}

效果演示:

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

step 5

获取 ptsigx

Request URL:

https://ssl.ptlogin2.qq.com/jump?clientuin=QQUin&keyindex=9&pt_aid=716027609&daid=383&u1=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump&pt_local_tk=633103212&pt_3rd_aid=102013353&ptopt=1&style=40

请求标头带上 Referer 与 Cookie(QQClientkey)

Referer: https://xui.ptlogin2.qq.com/
Cookie: QQClientkey

返回数据在浏览器 Response 中(网页数据) 。

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

实现代码:

/* 第五次会话 */
 
// 初始化URL参数
																						char lpszUrlPath_5[1024] = { 0 };
																						strcat(lpszUrlPath_5, "/jump?clientuin=");
																						strcat(lpszUrlPath_5, u_Uin);
																						strcat(lpszUrlPath_5, "&keyindex=9&pt_aid=716027609&daid=383&u1=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump&pt_local_tk=");
																						strcat(lpszUrlPath_5, u_Token);
																						strcat(lpszUrlPath_5, "&pt_3rd_aid=102013353&ptopt=1&style=40");
 
// 发送HTTPS请求
																						hHttpSession = InternetConnectA(hInternet, "ssl.ptlogin2.qq.com", INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
																						if (NULL != hHttpSession)
																						{
																							hHttpRequest = HttpOpenRequestA(hHttpSession, "GET", lpszUrlPath_5, NULL, "", NULL, INTERNET_FLAG_SECURE, 0);
																							if (NULL != hHttpRequest)
																							{
																								// 请求标头添加 Referer & Cookie 
																								char lpCookie_2[1024] = { 0 };
																								strcpy(lpCookie_2, "Referer: https://xui.ptlogin2.qq.com/");
																								strcat(lpCookie_2, "\r\n");
																								strcat(lpCookie_2, "Cookie: clientkey=");
																								strcat(lpCookie_2, u_Ckey);
																								strcat(lpCookie_2, "\r\n");
 
																								HttpAddRequestHeaders(hHttpRequest, lpCookie_2, -1L, HTTP_ADDREQ_FLAG_ADD);
 
																								bRet = HttpSendRequestA(hHttpRequest, NULL, NULL, NULL, 0);
																								if (bRet)
																								{
																									// 查询HTTP请求状态
																									dwRetCode = 0;
																									dwSizeOfRq = sizeof(DWORD);
																									bRet = HttpQueryInfoA(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL);
																									if (bRet)
																									{
																										// 获取返回数据的大小
																										DWORD dwNumberOfBytesAvailablex = 0;
																										InternetQueryDataAvailable(hHttpRequest, &dwNumberOfBytesAvailablex, NULL, NULL);
 
																										// 读取网页内容
																										char* lpBufferx = new char[dwNumberOfBytesAvailablex + 1]();
																										InternetReadFile(hHttpRequest, lpBufferx, dwNumberOfBytesAvailablex, &dwNumberOfBytesAvailablex);
 
																										// 返回的数据
																										cout << "[+] Response Data:" << lpBufferx << "\r\n" << endl;
 
																										delete[] lpBufferx;
 
																										
																									}
																								}
																							}
																						}

效果演示:

通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

完整工具下载

【蓝奏云下载】(提取码:eh9v)

【百度云下载】(提取码:wqau)

官方网站

【www.CHWM.vip】文章来源地址https://www.toymoban.com/news/detail-783731.html

到了这里,关于通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Win10自带的邮件email上登录qq邮箱|解决无法访问此账户:xx问题

    首先进入QQ邮箱 点击“设置”后进入“账户” 往下滑,找到“ POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 ”板块 开启前3条服务,开启时需手动发送短信,0.1元一条 同样点击生成授权码,手机发送短信,获取授权码。 打开我们win10自带的邮件软件,找到“添加账户”,点击进入“高

    2024年02月05日
    浏览(103)
  • 【电脑连接wifi不能访问网页但是微信和QQ可以登录如何解决】

    选择WIFI,修改DNS配置 1.选择控制面板,找到连接的WLAN,右键选择“Internet协议版本4(TCP/IPV4)”,点击“属性” 2.选择“高级” 3.选择DNS选项,添加“114.114.114.114”DNS服务器

    2024年02月12日
    浏览(37)
  • 电脑正常登录QQ微信,但浏览器无法打开网页,这个你一定要学会!

    电脑能正常登录微信/QQ,但是浏览器无法打开网页的情况时有发生。掌握这三个方法,就能轻松解决问题! 首先 按Win+R , 输入CMD , 回车 输入ping baidu.com , 回车 ▲ 网络正常情况有回复 有【来自xxx的回复:字节=xx……】就说明网络是正常的 ▲ 网络异常情况 如果不通,就

    2024年02月04日
    浏览(88)
  • 微信|QQ扫码登录网页版二维码失效问题解决方案 网站无法访问PC网页版如何解决 安卓软件历史版本下载 FV fooview悬浮球帮助教程

           1. 手机端浏览器登录网页的同时再用微信或者QQ扫码登录出现二维码失效问题如何解决?                   2.部分网站无法访问PC网页版如何解决?请看方案 目录 前言 1.方案 2.方案       使用Edge安卓浏览器访问电脑版网页 1.操作       1.1小米浏览器+微信(应用

    2023年04月08日
    浏览(63)
  • iphone自带邮箱添加QQ邮箱

    iphone中添加QQ邮箱之前,先保证你的QQ邮箱开启IMAP/SMTP服务,如果你在iphone中添加QQ邮箱时出现以下报错提示IMAP.qq.com未回应,就是IMAP/SMTP服务未开启 1、 邮箱中设置开启IMAP/SMTP服务         点击设置           点击账户            下翻  点击开启IMAP/SMTP服务   

    2024年02月09日
    浏览(46)
  • OutLook Express关联QQ邮箱

    目录 前言 一、登录QQ邮箱,并配置POP3/SMTP服务与IMAP/SMTP服务 1、打开QQ邮箱,来到设置—账户,下拉可以看到相关配置区: 二、在OutLook上添加QQ邮箱账户         1、在OutLook中新建邮件账号 2、在邮件服务器上保留邮件副本 3、设定SMTP验证 三、在Win10/11系统下操作步骤类似,

    2024年02月06日
    浏览(43)
  • QQ邮箱 网易邮箱及企业邮箱开通SMTP/POP3及设置授权码

    一 、什么是 POP3/IMAP/SMTP 服务 POP3 (Post Office Protocol - Version 3)协议用于支持使用电子邮件客户端获取并删除在服务器上的电子邮件。 IMAP (Internet Message Access Protocol)协议用于支持使用电子邮件客户端交互式存取服务器上的邮件。 SMTP (Simple Mail Transfer Protocol)协议用于支持

    2024年02月04日
    浏览(93)
  • 如何通过腾讯云短信实现发送验证码并校验验证码以实现登录功能

    验证码相关的10种技术 图像处理技术:生成、识别、验证验证码的图像。 机器学习技术:让计算机自动学习并识别验证码。 文字识别技术:将图像中的文字转换成计算机可读的文本。 模式识别技术:识别验证码中的模式及规律。 图像噪声处理技术:去除图像中的噪声干扰。

    2024年02月10日
    浏览(52)
  • Java发送(QQ)邮箱、验证码发送

    使用Java应用程序发送 E-mail 十分简单,但是首先需要在项目中导入 JavaMail API 和Java Activation Framework (JAF) 的jar包。 菜鸟教程提供的下载链接: JavaMail mail.jar 1.4.5 JAF(版本 1.1.1) activation.jar 1.1 导包 在基础Java工程中 首先在项目目录下创建 libs 文件夹后将下载好的 jar包 复制进去

    2024年02月09日
    浏览(44)
  • SpringBoot整合QQ邮箱发送验证码

    基于SpringBoot + QQ邮箱服务 + Hutools实现的获取验证码功能,接下来从如何申请授权码,如何配置项目,如何启动项目,如何测试项目进行讲解,下面的图片是一个测试案例,使用postman进行测试,在测试上填写发送人的邮箱,即可收到验证码邮箱 1.从仓库拉取代码 2.需要申请邮

    2024年02月07日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包