在 Java 中使用 MS Exchange Server 上的对话

通常,一封电子邮件由多个消息(或回复)组成,形成一个线程。在 Microsoft Exchange Server 中,这些线程被称为会话。在以编程方式使用 MS Exchange Server 时,您可能需要访问和管理对话。为此,在本文中,您将学习如何使用 Java 在 Microsoft Exchange Server 上查找、复制、移动和删除对话。

用于在 MS Exchange Server 上进行对话的 Java API

要在 Microsoft Exchange Server 上处理对话,我们将使用 Aspose.Email for Java。这是一个了不起的 API,它提供了一系列功能,可以在 Java 应用程序中与 MS Exchange Server 一起使用。您可以 下载 API 或使用以下 Maven 配置安装它。

存储库:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>

依赖:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>22.2</version>
    <classifier>jdk16</classifier>
</dependency>

在 Java 中查找 MS Exchange Server 上的对话

以下是使用 Java 从 MS Exchange Server 中的文件夹中查找对话的步骤。

以下代码示例显示了如何在 Java 中从 MS Exchange Server 中的文件夹中查找对话。

// 设置邮箱URI、用户名、密码、域信息
String mailboxUri = "https://ex2010/ews/exchange.asmx";
String username = "test.exchange";
String password = "pwd";
String domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

IEWSClient client = EWSClient.getEWSClient(mailboxUri, credentials);
System.out.println("Connected to Exchange");

// 在收件箱文件夹中查找对话项目
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// 显示所有对话
for (ExchangeConversation conversation : conversations) {
	// 显示 Id 和 Topic 等对话属性
	System.out.println("Topic: " + conversation.getConversationTopic());
	System.out.println("Flag Status: " + conversation.getFlagStatus());
	System.out.println();
}

在 Java 中复制 MS Exchange Server 上的对话

您还可以将对话从一个文件夹复制到另一个文件夹。让我们看看如何用 Java 将对话从收件箱复制到 Exchange Server 的已删除项目文件夹中。

以下代码示例显示了如何使用 Java 在 MS Exchange Server 中复制对话。

// 设置邮箱URI、用户名、密码、域信息
String mailboxUri = "https://ex2010/ews/exchange.asmx";
String username = "test.exchange";
String password = "pwd";
String domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

IEWSClient client = EWSClient.getEWSClient(mailboxUri, credentials);
System.out.println("Connected to Exchange");

// 在收件箱文件夹中查找对话项目
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// 显示所有对话
for (ExchangeConversation conversation : conversations) {
	System.out.println("Topic: " + conversation.getConversationTopic());
    
	// 根据某些条件复制对话项
    if (conversation.getConversationTopic().contains("test email")) {
        client.copyConversationItems(conversation.getConversationId(), client.getMailboxInfo().getDeletedItemsUri());
        System.out.println("Copied the conversation item to another folder");
    }
}

在 Java 中移动 MS Exchange Server 上的对话

在上一节中,我们只是将对话从一个文件夹复制到另一个文件夹。但是,在某些情况下,您可能需要将对话移至特定文件夹。以下是使用 Java 在 MS Exchange Server 中移动对话的步骤。

以下代码示例显示了如何使用 Java 在 MS Exchange Server 中移动对话。

// 设置邮箱URI、用户名、密码、域信息
String mailboxUri = "https://ex2010/ews/exchange.asmx";
String username = "test.exchange";
String password = "pwd";
String domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

IEWSClient client = EWSClient.getEWSClient(mailboxUri, credentials);
System.out.println("Connected to Exchange");

// 在收件箱文件夹中查找对话项目
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// 显示所有对话
for (ExchangeConversation conversation : conversations) {
	System.out.println("Topic: " + conversation.getConversationTopic());
    
	// 根据某些条件移动对话项目
    if (conversation.getConversationTopic().contains("test email") == true) {
        client.moveConversationItems(conversation.getConversationId(), client.getMailboxInfo().getDeletedItemsUri());
        System.out.println("Moved the conversation item to another folder");
    }
}

在 Java 中删除 MS Exchange Server 上的对话

最后,让我们看看如何在 Java 中从 MS Exchange Server 中删除对话。

以下代码示例显示了如何在 Java 中从 MS Exchange Server 中删除对话。

// 设置邮箱URI、用户名、密码、域信息
String mailboxUri = "https://ex2010/ews/exchange.asmx";
String username = "test.exchange";
String password = "pwd";
String domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);

IEWSClient client = EWSClient.getEWSClient(mailboxUri, credentials);
System.out.println("Connected to Exchange");

// 在收件箱文件夹中查找对话项目
ExchangeConversation[] conversations = client.findConversations(client.getMailboxInfo().getInboxUri());

// 显示所有对话
for (ExchangeConversation conversation : conversations) {
	System.out.println("Topic: " + conversation.getConversationTopic());
    
	// 根据某些条件删除会话项
    if (conversation.getConversationTopic().contains("test email") == true) {
        client.deleteConversationItems(conversation.getConversationId());
        System.out.println("Deleted the conversation item");
    }
}

获取免费 API 许可证

您可以获得 免费的临时许可证 使用 Aspose.Email for Java,没有评估限制。

结论

在本文中,您学习了如何使用 Java 在 Microsoft Exchange Server 中管理对话。您已经了解了如何在 Java 中以编程方式查找、复制、移动和删除 MS Exchange Server 上的对话。此外,您可以浏览 文档 以阅读有关 Aspose.Email for Java 的更多信息。此外,您可以通过我们的 论坛 提问。

也可以看看