IMAP 서버의 폴더 작업

폴더 정보 가져오기

Aspose.Email를 사용하면 IMAP 서버에서 폴더 정보를 얻는 것이 매우 쉽습니다. 다음을 호출하세요 listFolders() 메서드 ImapClient 클래스. 이것은 다음 객체를 반환합니다 ImapFolderInfoCollection 형식. 이 컬렉션을 반복하면서 개별 폴더 정보를 루프에서 가져옵니다. 메서드는 오버로드됩니다. 폴더 이름을 매개변수로 전달하여 하위 폴더 목록을 가져올 수 있습니다. 다음 코드 스니펫은 설명된 Aspose.Email 메서드를 사용하여 IMAP 서버에서 폴더 정보를 가져오는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get all folders in the currently subscribed folder
ImapFolderInfoCollection folderInfoColl = client.listFolders();

// Iterate through the collection to get folder info one by one
for (ImapFolderInfo folderInfo : (Iterable<ImapFolderInfo>) folderInfoColl) {
    // Folder name and get New messages in the folder
    System.out.println("Folder name is " + folderInfo.getName());
    ImapFolderInfo folderExtInfo = client.getFolderInfo(folderInfo.getName());
    System.out.println("New message count: " + folderExtInfo.getNewMessageCount());
    System.out.println("Is it readonly? " + folderExtInfo.getReadOnly());
    System.out.println("Total number of messages " + folderExtInfo.getTotalMessageCount());
}

폴더 삭제 및 이름 바꾸기

IMAP 서버의 폴더는 Aspose.Email을 사용하여 한 줄로 삭제하거나 이름을 바꿀 수 있습니다:

  • 다음은 deleteFolder() 메서드는 폴더 이름을 매개변수로 받습니다.
  • 에 대해 renameFolder() 메서드를 호출할 때 현재 폴더 이름과 새 폴더 이름을 전달해야 합니다. 다음 코드 스니펫은 IMAP 서버에서 폴더를 삭제하고 이름을 바꾸는 방법을 보여줍니다. 각 작업은 한 줄의 코드로 수행됩니다.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Delete a folder and Rename a folder
client.deleteFolder("foldername");
client.renameFolder("foldername", "newfoldername");

폴더에 새 메시지 추가

다음 방법을 사용하여 폴더에 새 메시지를 추가할 수 있습니다 MailMessage 및 ImapClient 클래스. 먼저, 다음을 생성합니다 MailMessage 제목, 받는 사람 및 보낸 사람 값을 제공하여 객체를 생성합니다. 그런 다음 폴더를 구독하고 메시지를 추가합니다. 다음 코드 스니펫은 폴더에 새 메시지를 추가하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create a message
MailMessage msg = new MailMessage("user@domain1.com", "user@domain2.com", "subject", "message");

// Subscribe to the Inbox folder and Append the newly created message
client.selectFolder(ImapFolderInfo.IN_BOX);
client.subscribeFolder(client.getCurrentFolder().getName());
client.appendMessage(client.getCurrentFolder().getName(), msg);

MultiConnection 지원으로 다중 메시지 추가

다음과 같이 여러 메시지를 추가할 수 있습니다 appendMessages 에 의해 제공되는 메서드 ImapClient 클래스.  appendMessages 메서드는 다음 목록을 받습니다 MailMessage 폴더가 매개변수로 제공되지 않으면 현재 폴더에 추가합니다. ImapClient는 고부하 작업을 위해 MultiConnection 모드도 지원합니다. 다음 코드 스니펫은 MultiConnection 모드를 사용하여 여러 메시지를 추가하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);

List<MailMessage> messages = new ArrayList<MailMessage>();
for (int i = 0; i < 20; i++) {
    MailMessage message = new MailMessage("<EMAIL ADDRESS>", "<EMAIL ADDRESS>", "Test Message - " + UUID.randomUUID().toString(), "IMAP Group Append with MultiConnection");
    messages.add(message);
}

imapClient.setConnectionsQuantity(5);
imapClient.setUseMultiConnection(MultiConnectionMode.Enable);
imapClient.appendMessages(messages);

다른 사서함 폴더로 메시지 이동

Aspose.Email for Java 은(는) 메시지를 한 사서함 폴더에서 다른 폴더로 이동하도록 허용합니다. ImapClient API. The moveMessage 메서드는 메시지 고유 ID와 대상 폴더 이름을 사용하여 메시지를 대상 폴더로 이동합니다. 다음 코드 스니펫은 메시지를 다른 사서함 폴더로 이동하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// This example shows how to move a message from one folder of a mailbox to another one using the ImapClient API of Aspose.Email for Java
// Available from Aspose.Email for Java onwards
// -------------- Available API Overload Members --------------
// void ImapClient.moveMessage(IConnection iConnection, int sequenceNumber, String folderName, boolean commitDeletions)
// void ImapClient.moveMessage(IConnection iConnection, String uniqueId, String folderName, boolean commitDeletions)
// void ImapClient.moveMessage(int sequenceNumber, String folderName, boolean commitDeletions)
// void ImapClient.moveMessage(String uniqueId, String folderName, boolean commitDeletions)
// void ImapClient.moveMessage(IConnection iConnection, int sequenceNumber, String folderName)
// void ImapClient.moveMessage(IConnection iConnection, String uniqueId, String folderName)
// void ImapClient.moveMessage(int sequenceNumber, String folderName)
// void ImapClient.moveMessage(String uniqueId, String folderName)

final ImapClient client = new ImapClient("host.domain.com", 993, "username", "password");
try {
    String folderName = "EMAILNET-35151";
    if (!client.existFolder(folderName))
        client.createFolder(folderName);
    try {
        MailMessage message = new MailMessage("from@domain.com", "to@domain.com", "EMAILNET-35151 - " + UUID.randomUUID(),
                "EMAILNET-35151 ImapClient: Provide option to Move Message");
        client.selectFolder(ImapFolderInfo.IN_BOX);
        // Append the new message to Inbox folder
        String uniqueId = client.appendMessage(ImapFolderInfo.IN_BOX, message);
        ImapMessageInfoCollection messageInfoCol1 = client.listMessages();
        System.out.println(messageInfoCol1.size());
        // Now move the message to the folder EMAILNET-35151
        client.moveMessage(uniqueId, folderName);
        client.commitDeletes();
        // Verify that the message was moved to the new folder
        client.selectFolder(folderName);
        messageInfoCol1 = client.listMessages();
        System.out.println(messageInfoCol1.size());
        // Verify that the message was moved from the Inbox
        client.selectFolder(ImapFolderInfo.IN_BOX);
        messageInfoCol1 = client.listMessages();
        System.out.println(messageInfoCol1.size());
    } finally {
        try {
            client.deleteFolder(folderName);
        } catch (java.lang.RuntimeException e) {
        }
    }
} finally {
    if (client != null)
        client.dispose();
}

다른 사서함 폴더로 메시지 복사

Aspose.Email API는 한 메일함 폴더에서 다른 폴더로 메시지를 복사하는 기능을 제공합니다. 이를 통해 단일 및 다중 메시지를 다음을 사용하여 복사할 수 있습니다 copyMessagecopyMessages 메서드. copyMessages 메서드는 메일함의 소스 폴더에서 대상 메일함 폴더로 여러 메시지를 복사할 수 있는 기능을 제공합니다. 다음 코드 스니펫은 메시지를 다른 메일함 폴더로 복사하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
final ImapClient client = new ImapClient("exchange.aspose.com", "username", "password");
try {
    // Create the destination folder
    String folderName = "EMAILNET-35242";
    if (!client.existFolder(folderName))
        client.createFolder(folderName);
    try {
        // Append a couple of messages to the server
        MailMessage message1 = new MailMessage("asposeemail.test3@aspose.com", "asposeemail.test3@aspose.com", "EMAILNET-35242 - " + UUID.randomUUID(),
                "EMAILNET-35242 Improvement of copy method.Add ability to 'copy' multiple messages per invocation.");
        String uniqueId1 = client.appendMessage(message1);

        MailMessage message2 = new MailMessage("asposeemail.test3@aspose.com", "asposeemail.test3@aspose.com", "EMAILNET-35242 - " + UUID.randomUUID(),
                "EMAILNET-35242 Improvement of copy method.Add ability to 'copy' multiple messages per invocation.");
        String uniqueId2 = client.appendMessage(message2);

        // Verify that the messages have been added to the mailbox
        client.selectFolder(ImapFolderInfo.IN_BOX);
        ImapMessageInfoCollection msgsColl = client.listMessages();
        for (ImapMessageInfo msgInfo : msgsColl)
            System.out.println(msgInfo.getSubject());

        // Copy multiple messages using the CopyMessages command and Verify that messages are copied to the destination folder
        client.copyMessagesByUids(Arrays.asList(uniqueId1, uniqueId2), folderName);

        client.selectFolder(folderName);
        msgsColl = client.listMessages();
        for (ImapMessageInfo msgInfo : msgsColl)
            System.out.println(msgInfo.getSubject());
    } finally {
        try {
            client.deleteFolder(folderName);
        } catch (java.lang.RuntimeException e) {
        }
    }
} finally {
    if (client != null)
        client.dispose();
}

특수 용도 메일함 폴더 작업

일부 IMAP 메시지 저장소에는 초안이나 보낸 메일을 보관하는 특수 용도 메일함이 포함됩니다. 많은 메일 클라이언트는 사용자가 초안이나 보낸 메일의 저장 위치를 지정하도록 허용하지만, 이를 구성하려면 사용자가 서버가 이러한 용도로 할당한 메일함을 알아야 합니다. Aspose.Email는 다음을 사용하여 이러한 특수 용도 메일함을 식별할 수 있습니다 ImapMailboxInfo 클래스는 이를 더 쉽게 작업할 수 있게 합니다. 다음 코드 샘플은 다음을 사용하여 이러한 특수 용도 메일함에 접근하는 방법을 보여줍니다 ImapMailboxInfo 클래스.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);

ImapMailboxInfo mailboxInfo = imapClient.getMailboxInfo();
System.out.println(mailboxInfo.getInbox());
System.out.println(mailboxInfo.getDraftMessages());
System.out.println(mailboxInfo.getJunkMessages());
System.out.println(mailboxInfo.getSentMessages());
System.out.println(mailboxInfo.getTrash());