首页  >  文章  >  Java  >  在Java中删除电子邮件

在Java中删除电子邮件

WBOY
WBOY原创
2024-08-30 15:56:40512浏览

以下文章提供了在 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