首頁 >Java >java教程 >在Java中刪除電子郵件

在Java中刪除電子郵件

WBOY
WBOY原創
2024-08-30 15:56:40551瀏覽

以下文章提供了在 Java 中刪除電子郵件的概述。 Java 中的刪除電子郵件可讓您刪除電子郵件以及傳送、轉發和接收電子郵件。它允許您使用 Message 類別 java 郵件 API 的 setFlag 選項刪除特定訊息,這是電子郵件發送階段之一。 Java 郵件 API 是電子郵件傳送階段之一,在讀取要傳送或接收的資料之前,請使用這些 jars mail.jar 和activation.jar 來執行 java 作業。

在Java中刪除電子郵件

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

要點

  • 在應用程式中,我們使用Gmail和其他郵件伺服器。
  • 我們正在利用 IMAP 協定顯示收件匣中的未讀電子郵件。
  • 第一封未讀電子郵件隨後被刪除。
  • 應用程式完成運行並打開收件匣後,我們可以正確觀察結果。
  • POP 協定僅允許刪除訊息。

刪除電子郵件概述

在Java中刪除電子郵件可以選擇刪除電子郵件以及發送、轉發和接收電子郵件。它接受刪除使用 setFlag 選項(如 Message 類別的函數)的特定訊息。 session物件用於建立資料夾物件後開啟該資料夾對象,然後透過setFlag方法將store對象連接到目前主機,然後取得要刪除的訊息。若要刪除訊息,必須使用連接到訊息的標誌。各種狀態有多個標誌,其中一些是系統定義的,另一些是用戶定義的。內部類別 Flags 總是定義預先定義的標誌。

如何用 Java 以程式方式刪除電子郵件?

郵件總共可以透過4步驟刪除:

1.會話物件

Session 物件維護與使用者會話相關的資料或修改設定。單一應用程式中的所有頁面都可以存取會話物件中包含的變量,該物件保存有關單一使用者的資料。名稱、ID 和首選項是經常保存在會話變數中的資訊範例。

2.連接目前主機並建構儲存物件

將設計時元資料匯出到資料庫整合實例中,並應建立儲存 URL 來指定和建立儲存桶(如果尚不存在)。要遷移實例,我們必須稍後在設定過程中指定此 URL。然後利用應用程式遷移服務將自動完成這些任務。

3.要建立資料夾對象,然後啟動它

不要求從儲存接收的資料夾物件確實存在於後端儲存中。使用exists方法檢查資料夾是否存在。資料夾是使用 create 方法建立的。最初,資料夾處於關閉狀態。幾種方法的文檔提到了它們在這種情況下有效的事實。呼叫資料夾的「開啟」函數將其開啟。除了打開和刪除之外,所有資料夾方法在此狀態下均有效。

4.使用setFlag方法,取得要刪除的訊息

存取 Gmail 或其他郵件伺服器。使用 IMAP 作為協議,我們顯示收件匣中的未讀電子郵件。之後您刪除第一封未讀電子郵件。如果我們在程式運行結束後打開收件箱,就可以準確地看到結果。

Flags主要支援將預先定義的flags聲明為內部類別:

  • Flags.Flag.Answered
  • Flags.Flag.Deleted
  • Flags.Flag.Recent
  • Flags.Flag.User

以上標誌是系統定義和使用者定義的電子郵件在不同狀態下的一些常見用法。

刪除電子郵件 API

取得session物件是進行刪除操作的第一步,之後我們可以建立store物件。為了確保儲存物件連接到本機或內部郵件伺服器憑證,我們也可以透過使用 getStore() 方法來檢索儲存對象,例如 Imap、Pop3、SMTP 等。資料夾物件是存取儲存物件的下一種方式收件匣等電子郵件或任何其他個人或公共存取資料夾。

透過使用 Message[] 數組,我們可以從特定資料夾中檢索訊息。為此,使用 getMessages() 方法是檢索它的路徑。我們知道Flags最重要的作用就是刪除所需的訊息。在這裡,我們可以使用名為 setFlag(FLAGS.Flag.DELETED, boolean) 的方法,這些條件驗證訊息並將標記設為在所需資料夾上刪除。

刪除郵件伺服器

在java中,我們可以使用名為MailServerManager的介面來實作java預設類,如AbstractMailServerManager、OFBizMailServerManager和XMLMailServerManager。使用 String[] 數組,該數組表示允許建立、更新和刪除伺服器的 server_types。 create(MailServer實例)用於建立實例id為long類型的郵件伺服器。在這裡我們可以刪除伺服器實例id,例如void類型的delete(java.lang.Long mailServerId)。

Java 刪除電子郵件的範例

下面給出的是提到的例子:

代碼:

package TestNG;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
public class NewTest {
public static void deletemail(String hst, String stype, String emailuser,
String passwd)
{
try
{
Properties props = new Properties();
props.put("mail.store.protocol", "pop3");
props.put("mail.pop3s.host", hst);
props.put("mail.pop3s.port", "995");
props.put("mail.pop3.starttls.enable", "true");
Session sess = Session.getDefaultInstance(props);
Store st = sess.getStore("pop3s");
st.connect(hst, emailuser, passwd);
Folder fld = st.getFolder("INBOX");
fld.open(Folder.READ_WRITE);
BufferedReader rd = new BufferedReader(new InputStreamReader(
System.in));
Message[] msgs = fld.getMessages();
System.out.println("msgs.length---" + msgs.length);
for (int i = 0; i < msgs.length; i++) {
Message ms = msgs[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Email Subject: " + ms.getSubject());
System.out.println("From: " + ms.getFrom()[0]);
String sub = ms.getSubject();
System.out.print("Do you want to delete this message [y/n] ? ");
String res = rd.readLine();
if ("Y".equals(res) || "y".equals(res)) {
ms.setFlag(Flags.Flag.DELETED, true);
System.out.println("Marked DELETE for message: " + sub);
} else if ("n".equals(res)) {
break;
}
}
fld.close(true);
st.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}
}
public static void main(String[] args) {
String gmailhost = "pop.gmail.com";
String mailStoreType = "pop3";
String username = "[email protected]";
String password = "xodbizaoiqijifre";
deletemail(gmailhost, mailStoreType, username, password);
}
}

輸出:

在Java中刪除電子郵件

說明:

  • 在上面的範例中,我們匯入了mail和io套件以及它們的預設類別、方法等
  • 然後使用Properties類,我們可以設定郵件伺服器和其他細節。
  • 使用所需的類別及其方法,我們可以執行郵件操作,例如建立、刪除等
  • For 循環迭代郵件資料並使用 try-catch 區塊取得郵件異常。
  • 我們可以呼叫main函數中的方法來執行操作。

結論

除了發送、轉發和接收電子郵件的功能之外,還有此選項。 Message 類別的 setFlag 方法可用來刪除特定訊息。為了瞭解這一點,您需要熟悉 JavaMail API 的電子郵件傳送步驟。 POP 協定僅支援 Java 電子郵件中的郵件刪除。在建立儲存物件之前連接到目前處於活動狀態的主機以取得會話物件。取得要銷毀的訊息,建立資料夾對象,然後使用 setFlag 函數啟動它。

常見問題

以下是提到的常見問題:

Q1。 java中什麼是刪除電子郵件?

答案:我們可以選擇刪除電子郵件以及發送、轉發和接收電子郵件。若要刪除特定訊息,請使用 Message 類別的 setFlag 函數。在閱讀此範例以了解其含義之前,請先了解 JavaMail API 的電子郵件發送階段。

Q2。我們在java中使用什麼協定來刪除電子郵件?

答案:POP協定僅支援java郵件中刪除的郵件。

Q3。如何用java刪除郵件?

答案: 要先取得會話對象,然後連接到目前主機並建構儲存對象。建立資料夾對象,然後啟動它。使用setFlag方法取得要刪除的訊息

以上是在Java中刪除電子郵件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn