IMAP Sunucusunda Klasörlerle Çalışma
Klasör Bilgilerini Alma
Aspose.Email ile bir IMAP sunucusundan klasör bilgilerini almak çok kolaydır. Şunu çağırın listFolders() metodu ImapClient sınıf. Şunun bir nesnesini döndürür ImapFolderInfoCollection tür. Bu koleksiyon içinde döngü yaparak bireysel klasörler hakkında bilgi alın. Metot aşırı yüklenmiştir. Alt klasörlerin listesini almak için bir klasör adını parametre olarak geçirebilirsiniz. Aşağıdaki kod parçacığı, tanımlanan Aspose.Email metodunu kullanarak bir IMAP sunucusundan klasör bilgilerini nasıl alacağınızı gösterir.
// 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());
}
Klasörleri Silme ve Yeniden Adlandırma
Bir IMAP sunucusundaki klasör, Aspose.Email ile tek bir satırda silinebilir veya yeniden adlandırılabilir:
- Bu deleteFolder() metot, klasör adını parametre olarak alır.
- İçin renameFolder() metod, mevcut klasör adını ve yeni klasör adını alır. Aşağıdaki kod parçacığı, bir IMAP sunucusundan klasör nasıl silinir ve bir klasör nasıl yeniden adlandırılır gösterir. Her işlem bir satır kodla gerçekleştirilir.
// 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");
Bir Klasöre Yeni Mesaj Ekleme
Klasöre yeni bir mesajı şu şekilde ekleyebilirsiniz MailMessage ve ImapClient sınıflar. İlk olarak, bir MailMessage nesne, konu, alıcı ve gönderen değerleri sağlanarak oluşturulur. Ardından bir klasöre abone olun ve mesajı ona ekleyin. Aşağıdaki kod parçacığı, bir klasöre yeni bir mesaj eklemenin nasıl yapılacağını gösterir.
// 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 Desteğiyle Birden Fazla Mesaj Ekle
Birden fazla mesajı şu şekilde ekleyebilirsiniz appendMessages tarafından sağlanan metot ImapClient sınıf. appendMessages metot, bir liste kabul eder MailMessage ve klasör parametre olarak sağlanmazsa, mevcut klasöre ekler. ImapClient ayrıca yoğun yüklemeler için MultiConnection modunu destekler. Aşağıdaki kod parçacığı, MultiConnection modunu kullanarak birden fazla mesaj eklemenin nasıl yapılacağını gösterir.
// 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);
Mesajları Başka Bir Posta Kutusu Klasörüne Taşı
Aspose.Email for Java, bir mesajı bir posta kutusu klasöründen diğerine taşımasına izin verir ImapClient API. The moveMessage metod, bir mesajı hedef klasöre taşımak için mesajın benzersiz kimliğini ve hedef klasör adını kullanır. Aşağıdaki kod parçacığı, mesajları başka bir posta kutusu klasörüne nasıl taşıyacağınızı gösterir.
// 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();
}
Mesajları Başka Bir Posta Kutusu Klasörüne Kopyala
Aspose.Email API, bir posta kutusu klasöründen diğerine mesaj kopyalama yeteneği sunar. Tek bir mesajı veya birden fazla mesajı şu şekilde kopyalamayı sağlar copyMessage ve copyMessages metodlar. copyMessages metot, bir posta kutusunun kaynak klasöründen hedef posta kutusu klasörüne birden fazla mesaj kopyalama yeteneği sağlar. Aşağıdaki kod parçacığı, mesajları başka bir posta kutusu klasörüne nasıl kopyalayacağınızı gösterir.
// 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();
}
Özel Kullanım Posta Kutusu Klasörleriyle Çalışma
Bazı IMAP mesaj depoları, taslak mesajları veya gönderilmiş mesajları tutmak için kullanılan özel kullanım posta kutularını içerir. Birçok e-posta istemcisi, taslak veya gönderilmiş mesajların nereye yerleştirileceğini belirlemeye izin verir, ancak bunu yapılandırmak için kullanıcının sunucunun bu amaçlar için ayrılmış posta kutularını bilmesi gerekir. Aspose.Email, bu özel kullanım posta kutularını şu şekilde tanımlayabilir ImapMailboxInfo sınıf, onlarla çalışmayı kolaylaştırır. Aşağıdaki kod örneği, bu özel kullanım posta kutularına şu şekilde erişimi gösterir ImapMailboxInfo sınıf.
// 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());