ارسال، خواندن و سازماندهی پیام‌ها در سرور Exchange

دریافت اطلاعات صندوق‌پست Exchange با EWS

Aspose.Email به شما امکان می‌دهد جزئیات صندوق‌پست را از Microsoft Exchange با استفاده از IEWSClient کلاس. با فراخوانی GetMailboxInfo() متد، کلاینت یک ExchangeMailboxInfo شیئی حاوی URIهای مفید پوشه‌ها مانند Mailbox، Inbox، Drafts و Sent Items.

برای اتصال به سرور Exchange با Exchange Web Services (EWS)، از IEWSClient کلاس. این کلاس از EWS برای اتصال و مدیریت آیتم‌ها روی سرور Exchange استفاده می‌کند.

قطعه کد زیر نشان می‌دهد چگونه اطلاعات صندوق‌پست را با استفاده از Exchange Web Services بدست آورید.

ارسال پیام‌های ایمیل از طریق EWS

می‌توانید ایمیل‌ها را از طریق Exchange با فراخوانی IEWSClient->Send() متد. این یک MailMessage شیء و آن را مستقیماً از طریق سرور با استفاده از EWS ارسال می‌کند.

نمونه کد زیر نشان می‌دهد چگونه یک پیام ایمیل HTML را از طریق یک سرور Exchange با استفاده از Exchange Web Services (EWS) و Aspose.Email برای C++ ارسال کنید. این فرآیند کامل برقراری اتصال به Exchange، ایجاد یک پیام ایمیل با فرستنده، گیرنده، موضوع و محتوای HTML، و سپس ارسال پیام با استفاده از متد Send کلاینت EWS را نشان می‌دهد.

خواندن ایمیل‌ها از صندوق پستی کاربر دیگر

برخی حساب‌ها در سرورهای Exchange دارای حق دسترسی به صندوق‌های پستی متعدد هستند و برخی کاربران چندین حساب ایمیل در همان سرور Exchange دارند. در هر دو حالت، کاربران می‌توانند با استفاده از Aspose.Email به صندوق‌های پستی دیگر کاربران دسترسی پیدا کنند. API مکانیزمی برای دسترسی به پوشه‌ها و ایمیل‌های صندوق‌های پستی دیگر با استفاده از IEWSClient کلاس. این قابلیت می‌تواند با استفاده از نسخهٔ بیش‌بارگذاری شدهٔ GetMailboxInfo() متد و ارائهٔ آدرس ایمیل کاربر به‌عنوان پارامتر.

کد نمونه زیر نشان می‌دهد چگونه ایمیل‌ها را با استفاده از IEWSClient کلاس.

فهرست پیام‌ها با استفاده از EWS

Aspose.Email برای C++ به شما امکان می‌دهد فرادادهٔ پیام را از صندوق‌های پستی سرور Exchange از طریق IEWSClient. با استفاده از مبتنی بر EWS ListMessages با API می‌توانید پیام‌ها را از هر پوشه‌ای فهرست کنید، فرادادهٔ پیام را مرور کنید و برای صندوق‌های پستی بزرگ صفحه‌بندی اعمال کنید.

فهرست پیام‌ها از صندوق ورودی

استفاده کنید ListMessages برای دریافت اطلاعات پایهٔ پیام مانند موضوع، فرستنده، گیرندگان و شناسهٔ پیام از Inbox یا هر پوشه‌ای.

نمونه کد زیر نشان می‌دهد چگونه می‌توان تمام پیام‌ها را در یک سرور Exchange فهرست و اطلاعات پایهٔ آن‌ها را نمایش داد.

  1. یک نمونه از IEWSClient.
  2. فراخوانی کنید ListMessages با URI پوشه هدف.
  3. از میان ExchangeMessageInfoCollection.

فهرست پیام‌ها از هر پوشه‌ای

ListMessages هر URI پوشهٔ معتبری را می‌پذیرد و به شما امکان می‌دهد آیتم‌ها را از Deleted Items، Drafts، Sent Items یا پوشه‌های سفارشی فهرست کنید. از IEWSClient->get_MailboxInfo->xxxFolderUri ویژگی برای دریافت URI پوشه‌های مختلف.

نمونه کد زیر نشان می‌دهد چگونه به URI‌های مختلف پوشه‌های سرور Exchange دسترسی پیدا کنید و پیام‌ها را از یک پوشهٔ تعیین شده بازیابی کنید.

صفحه‌بندی در لیست پیام‌ها

برای صندوق‌های پستی بزرگ، از ListMessagesByPage برای بارگذاری پیام‌ها در بلوک‌های کوچکتر.

نمونه کد زیر نشان می‌دهد چگونه صفحه‌بندی را برای بازیابی تعداد بالای پیام‌ها از صندوق ورودی سرور Exchange پیاده‌سازی کنید.

  1. اول، چندین پیام تست را بر روی سرور ایجاد می‌کند.
  2. سپس، از ListMessagesByPage متد برای بازیابی پیام‌ها به صورت بسته‌های کوچکتر (در این مورد 5 پیام در هر صفحه)، با عبور از تمام صفحات تا رسیدن به صفحهٔ آخر.
  3. در نهایت، کد تأیید می‌کند که همهٔ پیام‌ها به‌طور موفقیت‌آمیزی بازیابی شده‌اند با شمارش کل آیتم‌ها در تمام صفحات.

دریافت اطلاعات نوع پیام

استفاده کنید ExchangeMessageInfo->MessageInfoType برای تعیین نوع پیام زیرین Exchange (مانند ایمیل، درخواست جلسه و غیره).

نمونه کد زیر نشان می‌دهد چگونه به یک سرور Exchange متصل شوید و اطلاعات نوع پیام را از پوشه Deleted Items بازیابی کنید.

ذخیره پیام‌ها با استفاده از Exchange Web Services (EWS)

Aspose.Email به شما امکان می‌دهد پیام‌ها را از یک صندوق پستی سرور Exchange بازیابی کنید و آنها را در چندین قالب مانند EML، استریم‌های حافظه و MSG ذخیره نمایید. مثال‌های زیر نشان می‌دهند چگونه اطلاعات پیام را دریافت و پیام‌ها را با استفاده از IEWSClient API.

ذخیره پیام‌ها به‌صورت فایل‌های EML

برای ذخیرهٔ پیام‌های صندوق پستی به‌صورت فایل‌های EML:

  1. یک IEWSClient نمونه با استفاده از اعتبارهای معتبر.
  2. فراخوانی کنید ListMessages() برای بازیابی یک ExchangeMessagesInfoCollection.
  3. از مجموعه عبور کنید تا به URI یکتای هر پیام دسترسی پیدا کنید.
  4. فراخوانی کنید SaveMessage() برای ذخیرهٔ هر پیام بر روی دیسک به فرمت EML.

نمونه کد زیر نشان می‌دهد چگونه پیام‌های ایمیل را از صندوق ورودی سرور Exchange به‌صورت فایل‌های جداگانهٔ EML به‌صورت محلی با استفاده از Aspose.Email برای C++ ذخیره کنید.

ذخیره پیام‌ها در یک استریم حافظه

به‌جای نوشتن بر روی دیسک، می‌توانید پیام‌ها را در یک استریم حافظه ذخیره کنید—مفید برای ذخیرهٔ ایمیل‌ها در پایگاه داده یا پردازش آنها در حافظه.

نمونه کد زیر نشان می‌دهد چگونه پیام‌های ایمیل را از صندوق ورودی سرور Exchange در استریم‌های حافظه ذخیره کنید.

ذخیره پیام‌ها در قالب MSG

برای ذخیرهٔ پیام‌ها به‌صورت MSG:

  1. پیام را با استفاده از FetchMessage()، که یک MailMessage.
  2. فراخوانی کنید MailMessage::Save() با گزینه‌های ذخیره‌سازی MSG.

نمونه کد زیر نشان می‌دهد چگونه پیام‌های ایمیل را از صندوق ورودی سرور Exchange دریافت و به‌صورت فایل‌های فرمت Outlook MSG ذخیره کنید.

دریافت جزئیات پیام با استفاده از URI پیام

هنگامی که فقط یک URI یکتای پیام موجود باشد، می‌توانید همچنان تمام ExchangeMessageInfo اشیاء. IEWSClient::ListMessages() بارگذاری (overload) یک لیست از شناسه‌های پیام (URIها) را می‌پذیرد و یک ExchangeMessageInfoCollection. از این ویژگی استفاده کنید وقتی پیام URIها را به صورت خارجی ذخیره یا دریافت می‌کنید و نیاز دارید متادیتا (موضوع، فرستنده، اندازه و غیره) را بدون دریافت کامل پیام‌ها بارگذاری کنید.

نمونه کد زیر نشان می‌دهد چگونه چندین پیام ایمیل را در سرور Exchange ایجاد کنید و سپس اطلاعات پیام‌هایشان را با استفاده از شناسه‌های یکتا بازیابی کنید.

دریافت محتوای کامل پیام

ListMessages() بازمی‌گرداند اطلاعات خلاصه (موضوع، فرستنده، شناسه‌ها). برای بارگذاری محتوای کامل پیام — بدنه، هدرها، پیوست‌ها — از FetchMessage().

نمونه کد زیر نشان می‌دهد چگونه پیام‌های کامل را از صندوق ورودی سرور Exchange دریافت کرده و اطلاعات پیوست‌ها را استخراج کنید:

  1. یک IEWSClient نمونه.
  2. فراخوانی کنید ListMessages() برای دریافت فرادادهٔ پایهٔ پیام.
  3. هر URI یکتای پیام را استخراج کنید.
  4. فراخوانی کنید FetchMessage() برای دریافت جزئیات کامل پیام.

دریافت اندازه پیام (بدون دانلود کامل پیام)

Aspose.Email اطلاعات اندازهٔ پیام را بدون دریافت کامل ایمیل، از طریق ExchangeMessageInfo::Size ویژگی.

این برای این موارد مفید است:

  • آمار صندوق پستی
  • محاسبهٔ سهمیه
  • فیلتر کردن پیام‌های بزرگ پیش از دانلود

نمونه کد زیر نشان می‌دهد چگونه فرادادهٔ پیام‌ها از جمله اندازه را از صندوق ورودی سرور Exchange فهرست و نمایش دهید.

دانلود ایمیل‌ها از پوشه‌های عمومی Exchange

پوشه‌های عمومی Exchange امکان ذخیرهٔ پیام‌های مشترک بین کاربران را فراهم می‌کنند.

Aspose.Email IEWSClient به شما امکان می‌دهد عملیات زیر را با این پوشه‌ها و پیام‌های ذخیره‌شده در آنها انجام دهید:

  • فهرست پوشه‌های عمومی
  • مرور زیرپوشه‌ها به‌صورت بازگشتی
  • پیام‌ها را دانلود کنید و ذخیره نمایید (مثلاً به‌صورت فایل‌های MSG)

توجه: Microsoft Exchange Server 2007 یا نسخه‌های بالاتر مورد نیاز است، زیرا نسخه‌های قبلی از EWS پشتیبانی نمی‌کنند.

نمونه کد زیر نشان می‌دهد چگونه پیام‌ها را به‌صورت بازگشتی از تمام پوشه‌های عمومی و زیرپوشه‌های آنها در سرور Exchange دانلود کنید و به‌صورت فایل‌های Outlook MSG به‌صورت محلی ذخیره نمایید.

جابجایی پیام‌ها بین پوشه‌های Exchange

می‌توانید پیام‌ها را از یک پوشه Exchange به پوشه دیگر با استفاده از IEWSClient::MoveItem متد. این نیاز دارد به:

  • URI یکتای پیام برای انتقال.
  • URI یکتای پوشه مقصد.

نمونه کد زیر نشان می‌دهد چگونه پیام‌های ایمیل خاص را از صندوق ورودی سرور Exchange بر اساس معیارهای محتوا فیلتر و به پوشهٔ دیگری منتقل کنید.

  1. با استفاده از اعتبارهای EWS به سرور Exchange متصل شوید.
  2. دریافت اطلاعات صندوق پستی (URIهای پوشه).
  3. تمام پیام‌ها را از صندوق ورودی فهرست کنید.
  4. از هر پیام عبور کنید.
  5. بررسی کنید آیا موضوع شامل «process this message» است.
  6. پیام‌های منطبق را به پوشه Deleted Items منتقل کنید.
  7. تایید خروجی برای هر پیام منتقل‌شده.

حذف پیام‌ها از یک پوشه Exchange

می‌توانید پیام‌های ایمیل را از یک پوشه با کمک IEWSClient->DeleteMessage متد. این متد URI یکتا پیام را به‌عنوان پارامتر دریافت می‌کند.

نمونه کد زیر نشان می‌دهد چگونه پیام‌های ایمیل خاص را از صندوق ورودی سرور Exchange بر اساس معیار موضوع فیلتر و حذف کنید.

  1. از پیام‌های صندوق ورودی عبور کنید.
  2. پردازش پیام‌ها براساس برخی معیارها (در این مثال، یک کلیدواژه در موضوع پیام یافت می‌شود).
  3. حذف پیام‌های منطبق.

کپی پیام‌ها به پوشهٔ دیگر Exchange

استفاده کنید IEWSClient::CopyItem برای تکرار یک پیام در پوشه‌ای متفاوت. نسخهٔ overload شده URI کپی تازه ایجاد شده را برمی‌گرداند.

نمونه کد زیر نشان می‌دهد چگونه یک پیام ایمیل را در سرور Exchange ایجاد کنید و آن را به پوشه‌ای دیگر کپی کنید.