最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java實現(xiàn)簡單的郵件群發(fā)功能

 更新時間:2022年05月10日 11:24:34   作者:洛陽泰山  
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言編寫一個簡單的工具類,可以實現(xiàn)郵件群發(fā)功能。文中的示例代碼講解詳細(xì),需要的可以參考一下

pom文件引入第三方依賴

		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4</version>
		</dependency>
		<!--lombok-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

java代碼如下

 
import lombok.Data;
 
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
 
/**
 * Created by tarzan liu on 2021/5/9.
 */
public abstract class EmailUtil {
 
    private static final Session session;
 
    private static final EmailAuthenticator authenticator;
 
    static {
        InputStream inputStream = null;
        try {
            inputStream = EmailUtil.class.getResourceAsStream("/email.properties");
            Properties properties = new Properties();
            properties.load(inputStream);
 
            authenticator = new EmailAuthenticator();
            String username = properties.getProperty("email.username");
            authenticator.setUsername(username);
 
            String password = properties.getProperty("email.password");
            authenticator.setPassword(password);
 
            String smtpHostName = "smtp." + username.split("@")[1];
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.host", smtpHostName);
 
            session = Session.getInstance(properties, authenticator);
        } catch (Exception e) {
            throw new RuntimeException("init error.");
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
 
    private EmailUtil() { }
 
    /**
     * 群發(fā)郵件方法
     */
    private static void massSend(List<String> recipients, SimpleEmail email) throws MessagingException {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(authenticator.getUsername()));
        InternetAddress[] addresses = new InternetAddress[recipients.size()];
        for (int index = 0; index < recipients.size(); index ++) {
            addresses[index] = new InternetAddress(recipients.get(index));
        }
        message.setRecipients(RecipientType.TO, addresses);
        message.setSubject(email.getSubject());
        message.setContent(email.getContent(), "text/html;charset=utf-8");
 
        Transport.send(message);
    }
 
    /**
     * 發(fā)送郵件
     */
    public static void send(String recipient, SimpleEmail email) throws MessagingException {
        List<String> recipients = new ArrayList<>();
        recipients.add(recipient);
        massSend(recipients, email);
    }
 
 
    //可以單獨建一個類
    @Data
    public static class SimpleEmail {
        private String subject;
        private String content;
    }
 
 
    public static void main(String[] args) throws Exception {
        SimpleEmail simpleEmail = new SimpleEmail();
        simpleEmail.setSubject("今天你學(xué)習(xí)了么?");
        simpleEmail.setContent("今天你寫博客了么");
        send("1334512682@qq.com", simpleEmail);
    }
}

email.properties 系統(tǒng)郵箱配置

email.username=###@163.com
email.password=###

你的郵箱賬號和密碼,也可以省去配置文件,直接把賬號密碼寫死在代碼。

運行測試

右鍵run 運行主方法。

將發(fā)送的郵箱綁定到微信上,還能實現(xiàn)微信提醒功能!

到此這篇關(guān)于基于Java實現(xiàn)簡單的郵件群發(fā)功能的文章就介紹到這了,更多相關(guān)Java郵件群發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過實例學(xué)習(xí)JAVA對象轉(zhuǎn)成XML輸出

    通過實例學(xué)習(xí)JAVA對象轉(zhuǎn)成XML輸出

    這篇文章主要介紹了通過實例學(xué)習(xí)JAVA對象轉(zhuǎn)成XML輸出,做流程圖的項目時,新的流程定義為xml的,需要對xml與java對象進(jìn)行互轉(zhuǎn),下面我們來深入學(xué)習(xí),需要的朋友可以參考下
    2019-06-06
  • JDK8 new ReentrantLock((true)加鎖流程

    JDK8 new ReentrantLock((true)加鎖流程

    這篇文章主要介紹了java面試中常遇到的問題JDK8 new ReentrantLock((true)加鎖流程示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • SpringBoot 異步線程間數(shù)據(jù)傳遞的實現(xiàn)

    SpringBoot 異步線程間數(shù)據(jù)傳遞的實現(xiàn)

    本文主要介紹了SpringBoot 異步線程間數(shù)據(jù)傳遞的實現(xiàn),包括異步線程的基本概念、數(shù)據(jù)傳遞的方式、具體實現(xiàn)方式等,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 一文探索Java文件讀寫更高效方式

    一文探索Java文件讀寫更高效方式

    這篇文章主要介紹了一文探索Java文件讀寫更高效方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-07-07
  • Java雪花算法生成分布式id詳解

    Java雪花算法生成分布式id詳解

    這篇文章主要介紹了Java雪花算法生成分布式id詳解,隨著業(yè)務(wù)的增長,有些表可能要占用很大的物理存儲空間,為了解決該問題,后期使用數(shù)據(jù)庫分片技術(shù),將一個數(shù)據(jù)庫進(jìn)行拆分,通過數(shù)據(jù)庫中間件連接,需要的朋友可以參考下
    2024-01-01
  • IDEA正則表達(dá)式全局搜索圖文教程

    IDEA正則表達(dá)式全局搜索圖文教程

    當(dāng)您要搜索和替換特定的文本模式時,請使用正則表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于IDEA正則表達(dá)式全局搜索的相關(guān)資料,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Java多線程通信wait()和notify()代碼實例

    Java多線程通信wait()和notify()代碼實例

    這篇文章主要介紹了Java多線程通信wait()和notify()代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Springboot實現(xiàn)多線程注入bean的工具類操作

    Springboot實現(xiàn)多線程注入bean的工具類操作

    這篇文章主要介紹了Springboot實現(xiàn)多線程注入bean的工具類操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • java中下拉框select和單選按鈕的回顯操作

    java中下拉框select和單選按鈕的回顯操作

    這篇文章主要介紹了java中下拉框select和單選按鈕的回顯操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java+opencv3.2.0實現(xiàn)hough直線檢測

    Java+opencv3.2.0實現(xiàn)hough直線檢測

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0之hough直線檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論

渝北区| 漳浦县| 牟定县| 衡水市| 虎林市| 永丰县| 南丰县| 塔城市| 新干县| 清镇市| 永年县| 鹿泉市| 永济市| 隆回县| 绥宁县| 游戏| 峨山| 西乌珠穆沁旗| 宜良县| 马尔康县| 山东省| 咸丰县| 从江县| 始兴县| 竹北市| 文成县| 惠安县| 博湖县| 额济纳旗| 凤凰县| 沈丘县| 鹿邑县| 沽源县| 昌都县| 雷波县| 皮山县| 平邑县| 阳西县| 丽江市| 施甸县| 高碑店市|