إدارة صندوق البريد مع Microsoft Graph
بالإضافة إلى العمل مع الرسائل، المجلدات، والمرفقات، Aspose.Email for Java يتيح لك أيضًا إدارة ميزات مستوى صندوق البريد مثل الفئات، وتجاوزات البريد الوارد المركز، والقواعد. يمكنك أيضًا العمل مع عدة صناديق بريد عن طريق تبديل سياق المورد. هذه العمليات متاحة عبر تكامل Graph API.
كيفية العمل مع فئات Outlook
فئات Outlook تتيح لك تجميع ووضع علامات على الرسائل لتسهيل التنظيم. مع Aspose.Email، يمكنك إنشاء، جلب، تحديث، سرد، وحذف الفئات برمجيًا.
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
تتحكم Overrides في طريقة معالجة الرسائل من مرسلين معينين في البريد الوارد المركز. على سبيل المثال، يمكنك إجبار رسائل مرسل معين على الظهور دائمًا في العرض المركز.
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
قواعد صندوق البريد تتيح لك أتمتة إجراءات مثل توجيه الرسائل أو التصفية بناءً على شروط. تسمح واجهة Graph API بإنشاء، جلب، تحديث، سرد، وحذف قواعد البريد الوارد.
// 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());
العمل مع عدة صناديق بريد - تبديل سياق صندوق البريد
بشكل افتراضي، تُجرى العمليات على صندوق بريد المستخدم الحالي. يمكنك تبديل السياق إلى صندوق بريد آخر (مثلاً لسرد الرسائل من صندوق بريد مشترك) عن طريق تعيين نوع المورد ومعرف المورد.
// 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);
استعلامات OData مع Microsoft Graph
Aspose.Email for Java يوفر دعمًا لاستعلامات OData عند العمل مع Microsoft Graph. يتيح لك إجراء تصفية متقدمة، ترتيب، اختيار، تجزئة، وتوسيع عند استرجاع الموارد مثل المجلدات، الرسائل، جهات الاتصال، وعناصر التقويم. الـ ODataQueryBuilder الفئة تتيح لك إنشاء معاملات استعلام OData بطريقة منظمة وقابلة لإعادة الاستخدام بدلاً من بناء سلاسل الاستعلام يدويًا. يمكن تطبيق الطرق التالية للعد والبحث عبر مجموعات بيانات كبيرة:
Selectلجلب الخصائص التي تحتاجها فقط.Filterلتطبيق الفلاتر.OrderByلترتيب النتائج.TopوSkipللتجزئة.Expandلتوسيع الكيانات المرتبطة في استعلام واحد.
عدة GraphClient الطرق تقبل اختيارية ODataQueryBuilder معامل لتطبيق استعلامات OData، بما في ذلك:
- listFolders
- listMessages
- listContacts
- listCalendarItems
- listAttachments
- listCategories
- listOverrides
- listRules
- listTaskLists
- listTasks
- listNotebooks
العينة البرمجية التالية توضح كيفية استخدام ODataQueryBuilder لاستعلام المجلدات وجلب الرسائل باستخدام مرشحات متقدمة وتجزئة:
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());
}