Microsoft Graph ile Posta Kutusu Yönetimi

Mesajlar, klasörler ve eklerle çalışmanın yanı sıra, Aspose.Email for Java ayrıca kategoriler, odaklı gelen kutusu overrides ve kurallar gibi posta kutusu düzeyindeki özellikleri yönetmenize olanak tanır. Kaynak bağlamını değiştirerek birden fazla posta kutusuyla da çalışabilirsiniz. Bu işlemler Graph API entegrasyonu üzerinden kullanılabilir.

Outlook Kategorileriyle Nasıl Çalışılır

Outlook’taki Kategoriler, mesajları daha kolay düzenlemek için gruplandırmanıza ve etiketlemenize olanak tanır. Aspose.Email ile kategorileri programlı olarak oluşturabilir, alabilir, güncelleyebilir, listeleyebilir ve silebilirsiniz.

String categoryName = "Test Category";
int preset = CategoryPreset.Preset10;

// create a new category
OutlookCategory category = client.createCategory(categoryName, preset);

// fetch a category
OutlookCategory fetchedCategory = client.fetchCategory(category.getId());

// list categories
List<OutlookCategory> categories = client.listCategories();

// update a category
fetchedCategory.setDisplayName("Update Category");
fetchedCategory.setPreset(CategoryPreset.Preset11);
OutlookCategory updatedCategory = client.updateCategory(fetchedCategory);

// delete a category
client.delete(category.getId());

Overrides ile Nasıl Çalışılır

Overrides, belirli göndericilerden gelen mesajların Odaklı Gelen Kutusu’nda nasıl ele alındığını kontrol eder. Örneğin, belirli bir göndericiden gelen mesajların her zaman odaklı görünümde görünmesini zorlayabilirsiniz.

int focusedType = ClassificationType.Focused;

// create or update an override for a sender
ClassificationOverride override = client.createOrUpdateOverride(
    new MailAddress("testUser@host.com", "testUser"), focusedType
);

// list overrides
List<ClassificationOverride> list = client.listOverrides();
for (ClassificationOverride item : list)
    System.out.println(item.getSender().getAddress());

// update override classification
ClassificationOverride fetchedOverride = list.get(0);
fetchedOverride.setClassifyAs(ClassificationType.Other);
fetchedOverride.getSender().setDisplayName("testUser_1");
ClassificationOverride updatedOverride = client.createOrUpdateOverride(fetchedOverride);

// reset classification
fetchedOverride.setClassifyAs(ClassificationType.Focused);
updatedOverride = client.updateOverride(fetchedOverride);

// delete override
client.delete(updatedOverride.getId());

Outlook Kurallarıyla Nasıl Çalışılır

Posta kutusu kuralları, mesajları yönlendirme veya koşullara göre filtreleme gibi eylemleri otomatikleştirmenizi sağlar. Graph API, gelen kutusu kurallarını oluşturma, alma, güncelleme, listeleme ve silme işlemlerine izin verir.

// create a new rule
InboxRule rule = new InboxRule();
rule.setDisplayName("Test rule");
rule.setPriority(1);
rule.setEnabled(true);
rule.setConditions(new RulePredicates());
rule.getConditions().containsSenderStrings(new StringCollection());
rule.getConditions().containsSenderStrings().addItem("testUser");

// define actions
rule.setActions(new RuleActions());
rule.getActions().setForwardToRecipients(new MailAddressCollection());
rule.getActions().getForwardToRecipients()
    .addMailAddress(new MailAddress("testUser@host.com", "testUser", true));
rule.getActions().setStopProcessingRules(true);

InboxRule createdRule = client.createRule(rule);

// list rules
List<InboxRule> listedRules = client.listRules();
for (InboxRule item : listedRules)
    System.out.println(item.getDisplayName());

// fetch and update a rule
InboxRule fetchedRule = client.fetchRule(createdRule.getRuleId());
createdRule.setDisplayName("Test rule 1");
createdRule.setEnabled(false);
InboxRule updatedRule = client.updateRule(createdRule);

// delete rule
client.delete(createdRule.getRuleId());

Birden Çok Posta Kutusuyla Çalışma - Posta Kutusu Bağlamını Değiştirme

Varsayılan olarak, işlemler mevcut kullanıcının posta kutusunda gerçekleştirilir. Kaynak türünü ve kaynak kimliğini ayarlayarak bağlamı başka bir posta kutusuna (örneğin, paylaşılan bir posta kutusundaki mesajları listelemek için) geçiş yapabilirsiniz.

// switch to another mailbox
client.setResource(ResourceType.Users);
client.setResourceId("mailbox");
client.listMessages("mailfolder");

// switch back to the current user mailbox
client.setResource(ResourceType.Me);

Microsoft Graph ile OData Sorguları

Aspose.Email for Java, Microsoft Graph ile çalışırken OData sorgularını destekler. Klasörler, mesajlar, kişiler ve takvim öğeleri gibi kaynakları alırken gelişmiş filtreleme, sıralama, seçim, sayfalama ve genişletme yapmanıza olanak tanır. ODataQueryBuilder sınıf, sorgu dizelerini elle oluşturmak yerine, OData sorgu parametrelerini yapılandırılmış ve yeniden kullanılabilir bir şekilde oluşturmanıza olanak tanır. Aşağıdaki metodlar, büyük veri kümelerinde sayma ve arama için uygulanabilir:

  • Select sadece ihtiyacınız olan özellikleri almak için.
  • Filter filtreleri uygulamak için.
  • OrderBy sonuçları sıralamak için.
  • Top ve Skip sayfalama için.
  • Expand ilişkili varlıkları tek bir sorguda genişletmek için.

Birçok GraphClient metotlar isteğe bağlı bir ODataQueryBuilder OData sorguları uygulamak için parametre, şunları içerir:

  • listFolders
  • listMessages
  • listContacts
  • listCalendarItems
  • listAttachments
  • listCategories
  • listOverrides
  • listRules
  • listTaskLists
  • listTasks
  • listNotebooks

Aşağıdaki kod örneği şunun nasıl kullanılacağını gösterir: ODataQueryBuilder klasörleri sorgulamak ve gelişmiş filtreler ve sayfalama ile mesajları almak için:

IGraphClient client = GraphClient.GetClient();

client.setResource(ResourceType.Users);
client.setResourceId(username);
client.setEndpoint("https://graph.microsoft.com");

// Example 1: List folders ordered by name
ODataQueryBuilder builder = new ODataQueryBuilder();
builder.setOrderBy("name asc");

GraphFolderInfoCollection folders = client.listFolders(builder);
for (GraphFolderInfo folder : folders) {
    System.out.println(folder.getDisplayName());
}

String folderId = folders.get(0).getItemId();

// Example 2: Retrieve filtered and paged messages
builder = new ODataQueryBuilder();
{
    builder.setFilter("startswith(name,'A')");
    builder.setOrderBy("name asc");
    builder.setTop(10);
    builder.setSkip(5);
    builder.setSelect(new String[]{"name", "age"});
    builder.setExpand(new String[]{"children", "parents"});
    builder.setCount(true);
    builder.setSearch("\"John Doe\"");
    builder.setFormat("json");
};

GraphMessageInfoCollection msgs = client.listMessages(folderId, builder);
for (GraphMessageInfo msg : msgs) {
    System.out.println(msg.getSubject());
}