java 如何實現傳送郵件 email?

老马啸西风發表於2024-12-06

郵件系列

java 如何實現傳送郵件 email?

java 搭建屬於自己的郵件伺服器

java 傳送郵件 css-style 樣式丟失錯亂問題,有解決方案

java 傳送郵件-04-java 郵件傳送 http 介面如何定義?

開源專案

email: 一行程式碼實現郵件傳送

前言

大家好,我是老馬。

大家日常開發,對於郵件傳送應該能不陌生。本系列就讓我們一起學習一下郵件相關的內容。

如何使用IMAP服務?

首先介紹一些郵件傳送的基礎知識,如果你已經知道可以跳過。

直接到 Email 郵件傳送實現的部分。

IMAP是什麼?

IMAP,即Internet Message Access Protocol(網際網路郵件訪問協議),您可以透過這種協議從郵件伺服器上獲取郵件的資訊、下載郵件等。

IMAP與POP類似,都是一種郵件獲取協議。

IMAP和POP有什麼區別?

POP允許電子郵件客戶端下載伺服器上的郵件,但是您在電子郵件客戶端的操作(如:移動郵件、標記已讀等),這是不會反饋到伺服器上的,比如:您透過電子郵件客戶端收取了QQ郵箱中的3封郵件並移動到了其他資料夾,這些移動動作是不會反饋到伺服器上的,也就是說,QQ郵箱伺服器上的這些郵件是沒有同時被移動的。

但是IMAP就不同了,電子郵件客戶端的操作都會反饋到伺服器上,您對郵件進行的操作(如:移動郵件、標記已讀等),伺服器上的郵件也會做相應的動作。

也就是說,IMAP是“雙向”的。

同時,IMAP可以只下載郵件的主題,只有當您真正需要的時候,才會下載郵件的所有內容。

如何使用IMAP服務?

使用IMAP很簡單,首先,您需要先在QQ郵箱中啟用IMAP功能,然後,配置好客戶端,就可以使用了。

開啟 SMTP 服務

QQ 郵箱

【設定】-【賬戶】-【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務】

最下邊開啟

  • POP3/SMTP 服務

  • IMAP/SMTP 服務

網易 163 郵箱

image

網易相對比較簡單,直接開啟【授權碼】

Email

Email 是基於 java 實現的傳送郵件的工具包,力求簡單優雅。

創作緣由

看了各種 email 工具感覺沒有想象中方便。

就自己實現一個,後續會陸續加入新的特性。

特性

  • Fluent 流式語法

  • 網易 163 郵箱的傳送支援

  • 支援傳送給多個收件人,多個(秘密)抄送者

快速開始

環境要求

jdk7+

maven 3.x+

引入

<plugin>
    <groupId>com.github.houbb</groupId>
    <artifactId>email</artifactId>
    <version>0.0.2</version>
</plugin>

傳送郵件

此處密碼為網易郵箱對應的授權碼。

EmailBs.auth("xxx@163.com", "xxx")
        .content("自定義內容")
        .sendTo("xxx@yy.com");

這裡會透過 xxx@163.com 傳送給 xxx@yy.com 一封郵件。

郵件標題預設為無標題,內容為你的自定義內容。

你可以透過指定,配置更多豐富的特性。

方法列表

方法 說明
auth(username, password) username 為郵箱名稱,password 為對應密碼
content(subject, content) subject 為郵件標題,content 為郵件內容
content(content) subject 預設為 "無標題",content 為郵件內容
sendTo(toArray) toArray 為收件人列表
cc(ccArray) ccArray 為抄送人列表
bcc(bccArray) bccArray 為秘密抄送人列表

使用的例子

你可以指定多個收件人以及抄送人。

示例程式碼如下:

EmailBs.auth("xxx@163.com", "xxx")
       .content("自定義主題", "自定義內容")
       .cc("抄送者1@xx.com", "抄送者2@xx.com")
       .bcc("秘密抄送者1@xx.com", "秘密抄送者2@xx.com")
       .sendTo("收件人1@xx.com", "收件人2@xx.com");

後續特性

  • 支援常見郵箱

  • 支援郵件模板

相關文章