Práce se složkami na IMAP serveru
Získávání informací o složkách
Získání informací o složkách z IMAP serveru je s Aspose.Email velmi jednoduché. Zavolejte listFolders() metoda třídy ImapClient třída. Vrací objekt ImapFolderInfoCollection typ. Iterujte přes tuto kolekci a v cyklu získejte informace o jednotlivých složkách. Metoda je přetížena. Můžete předat název složky jako parametr pro získání seznamu podsložek. Následující úryvek kódu ukazuje, jak získat informace o složkách z IMAP serveru pomocí popsané metody Aspose.Email.
// 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());
}
Mazání a přejmenování složek
Složku na IMAP serveru lze s Aspose.Email smazat nebo přejmenovat v jediném řádku:
- The deleteFolder() metoda přijímá název složky jako parametr.
- Pro renameFolder() metodu, musíte předat název aktuální složky a nový název složky. Následující úryvek kódu ukazuje, jak odstranit složku z IMAP serveru a jak složku přejmenovat. Každá operace je provedena jedním řádkem kódu.
// 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");
Přidání nové zprávy do složky
Můžete přidat novou zprávu do složky pomocí MailMessage a ImapClient třídy. Nejprve vytvořte MailMessage objekt zadáním předmětu, hodnoty pro příjemce a odesílatele. Pak se přihlaste k složce a přidejte zprávu do ní. Následující úryvek kódu ukazuje, jak přidat novou zprávu do složky.
// 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);
Přidat více zpráv s podporou MultiConnection
Můžete přidat více zpráv pomocí appendMessages metoda poskytovaná ImapClient třída. The appendMessages metoda přijímá seznam MailMessage a přidá ji do aktuální složky, pokud není složka poskytnuta jako parametr. ImapClient také podporuje režim MultiConnection pro operace s vysokým zatížením. Následující úryvek kódu ukazuje, jak přidat více zpráv pomocí režimu 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);
Přesunout zprávy do jiné složky poštovní schránky
Aspose.Email pro Java umožňuje přesunout zprávu z jedné složky poštovní schránky do druhé pomocí ImapClient API. The moveMessage metoda používá jedinečné ID zprávy a název cílové složky pro přesunutí zprávy do cílové složky. Následující úryvek kódu ukazuje, jak přesunout zprávy do jiné složky poštovní schránky.
// 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();
}
Kopírovat zprávy do jiné složky poštovní schránky
API Aspose.Email poskytuje možnost kopírovat zprávu z jedné složky poštovní schránky do druhé. Umožňuje kopírovat jak jednu, tak i více zpráv pomocí copyMessage a copyMessages metody. copyMessages metoda poskytuje možnost kopírovat více zpráv ze zdrojové složky poštovní schránky do cílové složky poštovní schránky. Následující úryvek kódu ukazuje, jak kopírovat zprávy do jiné složky poštovní schránky.
// 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();
}
Práce se složkami speciálního využití poštovní schránky
Některé úložiště zpráv IMAP obsahují speciální poštovní schránky, jako jsou složky pro koncepty nebo odeslané zprávy. Mnoho e‑mailových klientů umožňuje uživatelům určit, kam mají být koncepty nebo odeslané zprávy uloženy, ale jejich nastavení vyžaduje, aby uživatel věděl, které schránky server pro tyto účely vyčlenil. Aspose.Email může tyto speciální schránky identifikovat pomocí ImapMailboxInfo třída usnadňuje s nimi pracovat. Následující ukázkový kód demonstruje, jak přistupovat k těmto speciálním poštovním schránkám pomocí ImapMailboxInfo třída.
// 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());