עבודה עם תיקיות בשרת IMAP
קבלת מידע על תיקיות
קבלת מידע על תיקיות משרת IMAP היא קלה מאוד עם Aspose.Email. קרא ל- listFolders() שיטה של ImapClient מחלקה. היא מחזירה אובייקט של אוסף מידע תיקייה Imap סוג. חזור על האוסף הזה וקבל מידע על תיקיות בודדות בלולאה. המתודה מוטעמת. אתה יכול להעביר שם תיקייה כפרמטר כדי לקבל רשימת תת‑תיקיות. קטע הקוד הבא מראה כיצד לקבל מידע על תיקייה משרת IMAP באמצעות המתודה המתוארת של 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());
}
מחיקה ושינוי שם של תיקיות
תיקייה בשרת 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. ה moveMessage המתודה משתמשת במזהה הייחודי של ההודעה ובשם תיקיית היעד להעברת הודעה לתיקיית היעד. הקטע הקוד הבא מראה כיצד להעביר הודעות לתיקיית דואר אחרת.
// 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();
}
העתק הודעות לתיקיית דואר אחרת
ה‑API של Aspose.Email מספק את היכולת להעתיק הודעה מתיקיית דואר אחת לאחרת. הוא מאפשר העתקה של הודעה יחידה וכן של הודעות מרובות באמצעות copyMessage ו copyMessages מתודות. ה- 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());