Bekerja dengan Folder pada Server IMAP

Mendapatkan Informasi Folder

Mendapatkan informasi tentang folder dari server IMAP sangat mudah dengan Aspose.Email. Panggil listFolders() metode dari ImapClient kelas. Ini mengembalikan objek dari ImapFolderInfoCollection tipe. Iterasi melalui koleksi ini dan dapatkan informasi tentang masing-masing folder dalam loop. Metode ini memiliki overload. Anda dapat memberikan nama folder sebagai parameter untuk mendapatkan daftar subfolder. Potongan kode berikut menunjukkan cara mendapatkan informasi folder dari server IMAP menggunakan metode Aspose.Email yang dijelaskan.

// 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());
}

Menghapus dan Mengganti Nama Folder

Folder pada server IMAP dapat dihapus atau diganti nama dalam satu baris dengan Aspose.Email:

  • The deleteFolder() metode menerima nama folder sebagai parameter.
  • Untuk renameFolder() metode, Anda perlu memberikan nama folder saat ini dan nama folder baru. Potongan kode berikut menunjukkan cara menghapus folder dari server IMAP, dan cara mengganti nama folder. Setiap operasi dilakukan dengan satu baris kode.
// 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");

Menambahkan Pesan Baru di dalam Folder

Anda dapat menambahkan pesan baru ke folder menggunakan MailMessage dan ImapClient kelas. Pertama, buat sebuah MailMessage objek dengan memberikan nilai subjek, penerima, dan pengirim. Kemudian berlangganan ke sebuah folder dan tambahkan pesan ke dalamnya. Potongan kode berikut menunjukkan cara menambahkan pesan baru ke sebuah folder.

// 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);

Tambah Beberapa Pesan dengan Dukungan MultiConnection

Anda dapat menambahkan beberapa pesan dengan menggunakan appendMessages metode yang disediakan oleh ImapClient kelas. The appendMessages metode menerima daftar MailMessage dan menambahkannya ke folder saat ini jika folder tidak diberikan sebagai parameter. ImapClient juga mendukung mode MultiConnection untuk operasi beban berat. Potongan kode berikut menunjukkan cara menambahkan beberapa pesan dengan menggunakan mode 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);

Pindahkan Pesan ke Folder Kotak Surat Lain

Aspose.Email for Java memungkinkan memindahkan sebuah pesan dari satu folder kotak surat ke folder lain menggunakan ImapClient API. The moveMessage metode menggunakan ID unik pesan dan nama folder tujuan untuk memindahkan pesan ke folder tujuan. Potongan kode berikut menunjukkan cara memindahkan pesan ke folder kotak surat lain.

// 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();
}

Salin Pesan ke Folder Kotak Surat Lain

API Aspose.Email menyediakan kemampuan untuk menyalin pesan dari satu folder mailbox ke folder lain. Ini memungkinkan penyalinan satu pesan maupun beberapa pesan menggunakan copyMessage dan copyMessages metode. The copyMessages metode menyediakan kemampuan untuk menyalin beberapa pesan dari folder sumber sebuah mailbox ke folder mailbox tujuan. Potongan kode berikut menunjukkan cara menyalin pesan ke folder mailbox lain.

// 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();
}

Bekerja dengan Folder Mailbox Penggunaan Khusus

Beberapa penyimpanan pesan IMAP menyertakan mailbox penggunaan khusus, seperti yang digunakan untuk menyimpan pesan draf atau pesan terkirim. Banyak klien email memungkinkan pengguna menentukan tempat draf atau pesan terkirim disimpan, namun konfigurasi memerlukan pengguna mengetahui mailbox mana yang disediakan server untuk tujuan tersebut. Aspose.Email dapat mengidentifikasi mailbox penggunaan khusus ini dengan menggunakan ImapMailboxInfo kelas untuk mempermudah bekerja dengan mereka. Contoh kode berikut menunjukkan cara mengakses mailbox penggunaan khusus ini dengan menggunakan ImapMailboxInfo kelas.

// 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());