欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)Google郵箱SMTP協(xié)議的示例代碼

 更新時(shí)間:2025年06月12日 10:24:55   作者:Lin_XXiang  
這篇文章主要為大家詳細(xì)介紹了如何使用java實(shí)現(xiàn)Google郵箱SMTP協(xié)議,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、開通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)文章

  • C++ 虛函數(shù)與純虛函數(shù)代碼詳解

    C++ 虛函數(shù)與純虛函數(shù)代碼詳解

    本文主要介紹了C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java枚舉enum,根據(jù)value值獲取key鍵的操作

    java枚舉enum,根據(jù)value值獲取key鍵的操作

    這篇文章主要介紹了java枚舉enum,根據(jù)value值獲取key鍵的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • java日期處理工具類

    java日期處理工具類

    這篇文章主要為大家詳細(xì)介紹了java日期處理工具類,其次還介紹了日期處理的基礎(chǔ)知識(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 如何通過(guò)海康威視設(shè)備網(wǎng)絡(luò)SDK進(jìn)行Java二次開發(fā)攝像頭車牌識(shí)別詳解

    如何通過(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-02
  • java在pdf中生成表格的方法

    java在pdf中生成表格的方法

    這篇文章主要介紹了java在pdf中生成表格的方法,需要的朋友可以參考下
    2015-11-11
  • Java多線程 線程組原理及實(shí)例詳解

    Java多線程 線程組原理及實(shí)例詳解

    這篇文章主要介紹了Java多線程 線程組原理及實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java toString方法重寫工具之ToStringBuilder案例詳解

    Java toString方法重寫工具之ToStringBuilder案例詳解

    這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mybatis中resultMap 標(biāo)簽的使用教程

    mybatis中resultMap 標(biāo)簽的使用教程

    resultMap 標(biāo)簽用來(lái)描述如何從數(shù)據(jù)庫(kù)結(jié)果集中來(lái)加載對(duì)象,這篇文章重點(diǎn)給大家介紹mybatis中resultMap 標(biāo)簽的使用,感興趣的朋友一起看看吧
    2018-07-07
  • Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法

    Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法

    在日常開發(fā)和工作中,我們可能要根據(jù)用戶上傳的文件做一系列的處理,本篇文章就以Excel表格文件為例,主要介紹了Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法,需要的朋友可以參考下
    2024-06-06
  • java中線程中斷的實(shí)現(xiàn)示例

    java中線程中斷的實(shí)現(xiàn)示例

    中斷只是一種協(xié)作協(xié)商機(jī)制,Java沒有給中斷增加任何語(yǔ)法,中斷的過(guò)程完全需要程序員自己實(shí)現(xiàn),本文就來(lái)介紹一下線程中斷的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論