java實現(xiàn)Google郵箱SMTP協(xié)議的示例代碼
一、開通Google的SMTP協(xié)議
在谷歌郵箱中開啟IMAP訪問

到google的設(shè)置中開啟兩步驗證功能

在到 創(chuàng)建和管理應(yīng)用專用密碼

二、java中實現(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ā)送賬號
public static String PASSWORD = "hrnj tyoi mnie rodo"; //郵箱平臺的授權(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主機名
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實現(xiàn)Google郵箱SMTP協(xié)議的示例代碼的文章就介紹到這了,更多相關(guān)java郵箱SMTP協(xié)議內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java枚舉enum,根據(jù)value值獲取key鍵的操作
這篇文章主要介紹了java枚舉enum,根據(jù)value值獲取key鍵的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
如何通過海康威視設(shè)備網(wǎng)絡(luò)SDK進行Java二次開發(fā)攝像頭車牌識別詳解
這篇文章主要介紹了如何通過??低曉O(shè)備網(wǎng)絡(luò)SDK進行Java二次開發(fā)攝像頭車牌識別的相關(guān)資料,描述了如何使用??低曉O(shè)備網(wǎng)絡(luò)SDK進行車牌識別和圖片抓拍的開發(fā)流程,包括遇到的問題及其解決辦法,需要的朋友可以參考下2025-02-02
Java toString方法重寫工具之ToStringBuilder案例詳解
這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
mybatis中resultMap 標(biāo)簽的使用教程
resultMap 標(biāo)簽用來描述如何從數(shù)據(jù)庫結(jié)果集中來加載對象,這篇文章重點給大家介紹mybatis中resultMap 標(biāo)簽的使用,感興趣的朋友一起看看吧2018-07-07
Spring?Boot?+?EasyExcel?+?SqlServer?進行批量處理數(shù)據(jù)的高效方法
在日常開發(fā)和工作中,我們可能要根據(jù)用戶上傳的文件做一系列的處理,本篇文章就以Excel表格文件為例,主要介紹了Spring?Boot?+?EasyExcel?+?SqlServer?進行批量處理數(shù)據(jù)的高效方法,需要的朋友可以參考下2024-06-06

