java實(shí)現(xiàn)Google郵箱SMTP協(xié)議的示例代碼
一、開通Google的SMTP協(xié)議
在谷歌郵箱中開啟IMAP訪問
到google的設(shè)置中開啟兩步驗(yàn)證功能
在到 創(chuàng)建和管理應(yīng)用專用密碼
二、java中實(shí)現(xiàn)
引入maven
<!--郵件--> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>
工具類
import javax.activation.DataHandler; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.util.ByteArrayDataSource; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Properties; /** * @author LKX * @version 1.0 * @Description * @date 2025-06-11 14:10 */ public class MailUtils { public static String USERNAME = "kexianglin261@gmail.com"; // 郵箱發(fā)送賬號(hào) public static String PASSWORD = "hrnj tyoi mnie rodo"; //郵箱平臺(tái)的授權(quán)碼 public static String HOST = "smtp.gmail.com"; // SMTP服務(wù)器地址 public static String PORT = "587"; //SMTP服務(wù)器端口 public static Session session = null; /** * 創(chuàng)建Sesssion */ public static void createSession() { if (session != null) return; Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", HOST); //SMTP主機(jī)名 props.put("mail.smtp.port", PORT); session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USERNAME, PASSWORD); } }); } /** * 發(fā)送純文本郵件,單人發(fā)送 * * @param title * @param content * @param toMail */ public static void postMessage(String title, String content, String toMail) { try { createSession(); //構(gòu)造郵件主體 MimeMessage message = new MimeMessage(session); message.setSubject(title); message.setText(content); message.setFrom(new InternetAddress(USERNAME)); message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toMail)); //發(fā)送 Transport.send(message); } catch (MessagingException e) { throw new RuntimeException(e); } } /** * 發(fā)送帶附件的郵件 * * @param title * @param content * @param fileName * @param filePath * @param toMail */ public void postMessageWithFile(String title, String content, String fileName, String filePath, String toMail) { try { createSession(); //構(gòu)造郵件主體 MimeMessage message = new MimeMessage(session); message.setSubject(title); //郵件主體 BodyPart textPart = new MimeBodyPart(); textPart.setContent(content, "text/html;charset=utf-8"); //郵件附件 BodyPart filePart = new MimeBodyPart(); filePart.setFileName(fileName); filePart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get(filePath)), "application/octet-stream"))); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(textPart); multipart.addBodyPart(filePart); message.setContent(multipart); message.setFrom(new InternetAddress(USERNAME)); message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toMail)); //發(fā)送 Transport.send(message); } catch (Exception e) { throw new RuntimeException(e); } } }
到此這篇關(guān)于java實(shí)現(xiàn)Google郵箱SMTP協(xié)議的示例代碼的文章就介紹到這了,更多相關(guān)java郵箱SMTP協(xié)議內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java枚舉enum,根據(jù)value值獲取key鍵的操作
這篇文章主要介紹了java枚舉enum,根據(jù)value值獲取key鍵的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02如何通過(guò)??低曉O(shè)備網(wǎng)絡(luò)SDK進(jìn)行Java二次開發(fā)攝像頭車牌識(shí)別詳解
這篇文章主要介紹了如何通過(guò)??低曉O(shè)備網(wǎng)絡(luò)SDK進(jìn)行Java二次開發(fā)攝像頭車牌識(shí)別的相關(guān)資料,描述了如何使用??低曉O(shè)備網(wǎng)絡(luò)SDK進(jìn)行車牌識(shí)別和圖片抓拍的開發(fā)流程,包括遇到的問題及其解決辦法,需要的朋友可以參考下2025-02-02Java toString方法重寫工具之ToStringBuilder案例詳解
這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08mybatis中resultMap 標(biāo)簽的使用教程
resultMap 標(biāo)簽用來(lái)描述如何從數(shù)據(jù)庫(kù)結(jié)果集中來(lái)加載對(duì)象,這篇文章重點(diǎn)給大家介紹mybatis中resultMap 標(biāo)簽的使用,感興趣的朋友一起看看吧2018-07-07Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法
在日常開發(fā)和工作中,我們可能要根據(jù)用戶上傳的文件做一系列的處理,本篇文章就以Excel表格文件為例,主要介紹了Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法,需要的朋友可以參考下2024-06-06