Praca z folderami na serwerze IMAP
Uzyskiwanie informacji o folderach
Uzyskanie informacji o folderach z serwera IMAP jest bardzo proste z Aspose.Email. Wywołaj listFolders() metoda ImapClient klasa. Zwraca obiekt ImapFolderInfoCollection typ. Iteruj przez tę kolekcję i uzyskaj informacje o poszczególnych folderach w pętli. Metoda jest przeciążona. Możesz przekazać nazwę folderu jako parametr, aby uzyskać listę podfolderów. Poniższy fragment kodu pokazuje, jak uzyskać informacje o folderze z serwera IMAP używając opisanej 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());
}
Usuwanie i przemianowywanie folderów
Folder na serwerze IMAP może być usunięty lub przemianowany w jednej linii przy użyciu Aspose.Email:
- Ten deleteFolder() metoda przyjmuje nazwę folderu jako parametr.
- Dla renameFolder() metoda, musisz podać nazwę bieżącego folderu oraz nową nazwę folderu. Poniższy fragment kodu pokazuje, jak usunąć folder z serwera IMAP oraz jak zmienić nazwę folderu. Każda operacja jest wykonywana jedną linią kodu.
// 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");
Dodawanie nowej wiadomości w folderze
Możesz dodać nową wiadomość do folderu używając MailMessage i ImapClient klasy. Najpierw utwórz MailMessage obiekt, podając wartości tematu, odbiorcy i nadawcy. Następnie zasubskrybuj folder i dodaj do niego wiadomość. Poniższy fragment kodu pokazuje, jak dodać nową wiadomość do folderu.
// 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);
Dodaj wiele wiadomości z obsługą MultiConnection
Możesz dodać wiele wiadomości używając appendMessages metoda dostarczana przez ImapClient klasa. Ta appendMessages metoda przyjmuje listę MailMessage i dodaje go do bieżącego folderu, jeśli folder nie został podany jako parametr. ImapClient obsługuje także tryb MultiConnection dla operacji o dużym obciążeniu. Poniższy fragment kodu pokazuje, jak dodać wiele wiadomości przy użyciu trybu 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);
Przenieś wiadomości do innego folderu skrzynki pocztowej
Aspose.Email dla Javy umożliwia przeniesienie wiadomości z jednego folderu skrzynki pocztowej do drugiego przy użyciu ImapClient API. The moveMessage metoda używa unikalnego identyfikatora wiadomości oraz nazwy folderu docelowego do przenoszenia wiadomości do folderu docelowego. Poniższy fragment kodu pokazuje, jak przenieść wiadomości do innego folderu skrzynki pocztowej.
// 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();
}
Kopiuj wiadomości do innego folderu skrzynki pocztowej
API Aspose.Email zapewnia możliwość kopiowania wiadomości z jednego folderu skrzynki do drugiego. Umożliwia kopiowanie pojedynczej oraz wielu wiadomości przy użyciu copyMessage i copyMessages metody. copyMessages metoda zapewnia możliwość kopiowania wielu wiadomości ze źródłowego folderu skrzynki do folderu docelowego. Poniższy fragment kodu pokazuje, jak skopiować wiadomości do innego folderu skrzynki.
// 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();
}
Praca ze specjalnymi folderami skrzynek pocztowych
Niektóre magazyny wiadomości IMAP zawierają specjalne skrzynki pocztowe, takie jak te przechowujące szkice lub wysłane wiadomości. Wiele klientów poczty pozwala użytkownikom określić, gdzie powinny być umieszczane szkice lub wysłane wiadomości, ale ich konfiguracja wymaga, aby użytkownik znał, które skrzynki serwer przeznaczył do tych celów. Aspose.Email może identyfikować te specjalne skrzynki, używając ImapMailboxInfo klasa ułatwiająca pracę z nimi. Poniższy przykład kodu demonstruje, jak uzyskać dostęp do tych specjalnych skrzynek pocztowych przy użyciu ImapMailboxInfo klasa.
// 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());