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.pswp.cn/news/162920.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162920.shtml
英文地址,請注明出處:http://en.pswp.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;分別用來采集車頭&…