استخراج ویژگیهای خاص میتواند هنگام کار با فایلهای پیام بسیار مفید باشد. این به معنای خواندن و بازیابی قطعات خاصی از دادهها از یک شی پیام یا یک فایل (ایمیل، پیام چت، رویداد سیستم و غیره) به جای پردازش کل پیام است. این امکان را به برنامهها میدهد تا فقط فیلدهایی که نیاز دارند (برای ایندکسگذاری، فیلتر کردن، نمایش، تجزیه و تحلیل یا مسیریابی) را دسترسی داشته باشند و بقیه را نادیده بگیرند. این ویژگی برای توسعهدهندگانی که برنامههای با عملکرد بالا میسازند و نیاز به اسکن، تجزیه و تحلیل یا گزارشگیری از صندوقهای پستی بزرگ دارند، مفید است. استخراج کامل هر پیام فقط برای دریافت موضوع، نام پیوست یا فهرست دریافتکنندگان، ناکارآمد است و حافظه قابل توجهی مصرف میکند.
Aspose.Email for .NET به شما امکان میدهد این ویژگی را در پروژه خود با APIهای قدرتمند آن پیادهسازی کنید. این محصول مجموعهای جامع از اجزا برای کار با فایلهای PST و موارد بیشتر دارد.
در این مقاله، نحوه استخراج ویژگیهای خاص، تمام پیوستها و فهرست دریافتکنندگان از پیامها در یک فایل PST با استفاده از C# را نشان خواهیم داد. و نیازی به بارگذاری تمام آیتمهای MAPI نخواهیم داشت.
آنچه برای شروع نیاز دارید
برای کار با فایلهای ذخیرهسازی Outlook در C#، از کتابخانه Aspose.Email for .NET استفاده میکنیم. این کتابخانه به شما امکان میدهد پیامهای ایمیل، پیوستها، پوشهها، قالبها و موارد بیشتر را بدون وابستگی به Microsoft Outlook یا سایر وابستگیهای خارجی مدیریت کنید. میتوانید آن را از طریق NuGet یا با استفاده از فرمان زیر در کنسول NuGet Package Manager نصب کنید:
PM> Install-Package Aspose.Email
دریافت یک مجوز موقت برای ارزیابی کتابخانه بدون محدودیت.
استخراج ویژگیهای خاص با استفاده از تگهای ویژگی
کلاس PersonalStorage API اصلی برای کار با فایلهای PST است که شامل متد کارآمد ExtractProperty میشود. ExtractProperty یک ویژگی MAPI را بر اساس برچسب عددی آن بازیابی میکند (در صورت عدم وجود null برمیگرداند). این متد برای انجام بررسیهای سریع مقادیری مانند PRSUBJECT، PRSENTREPRESENTINGNAME یا PRCREATIONTIME مناسب است. از KnownPropertyList برای دریافت برچسبهای شناختهشده ویژگی استفاده کنید، سپس با یک EntryId پیام، ExtractProperty را فراخوانی کنید تا فقط فیلدهای مورد نیاز را بدون بارگذاری کامل پیام بخوانید.
*برچسبهای ویژگی عددهای صحیحی هستند که یک ویژگی MAPI را شناسایی میکنند. Aspose.Email کلاس KnownPropertyList را برای دسترسی آسان به این برچسبها فراهم میکند.
نمونه کد
کد C# زیر نشان میدهد که چگونه یک فایل PST را باز کنید، پیامها را در یک پوشه مرور کنید و فقط موضوع و آدرس ایمیل فرستنده هر پیام را استخراج کنید:
توضیح
این کد اسکن PST را با کمترین استفاده از منابع نشان میدهد. بهجای استفاده از pst.ExtractMessage(messageInfo) برای دریافت شیء کامل MapiMessage (که شامل تمام ویژگیها، بدنه و پیوستها است)، فقط دو ویژگی خاص را استخراج میکنیم. متد ExtractProperty لایه ذخیرهسازی PST را بهصورت مستقیم دسترسی میدهد تا فقط بایتهای دادهٔ درخواستشده را بازیابی کند. این رویکرد سریع است و حافظهٔ کمی مصرف میکند. همچنین برای تولید گزارشها یا آمار از پوشههای بزرگ بهسرعت مناسب است. عملگرهای null‑conditional (?.) و null‑coalescing (??) برای مدیریت مواردی که یک پیام ممکن است ویژگی درخواستشده را نداشته باشد، استفاده میشوند.
دانلود پیوستها
بارگیری تمام پیوستها از یک پیام یک سناریوی رایج دیگر است. به جای استخراج کل پیام و سپس دسترسی به مجموعه پیوستهای آن، میتوانید از متد اختصاصی ExtractAttachments استفاده کنید. این متد یک MapiAttachmentCollection برای EntryId پیام داده شده برمیگرداند که به شما امکان میدهد هر پیوست را مستقیماً روی دیسک ذخیره کنید.
نمونه کد
در اینجا نحوه استخراج و ذخیره تمام پیوستها از یک پیام خاص آورده شده است:
توضیح
مزیت اصلی استفاده از ExtractAttachments کارایی است. استخراج کامل پیام باعث میشود کل ساختار پیام را رمزگشایی و به حافظه بارگذاری کند، از جمله بدنه و تمام ویژگیهای آن، فقط برای دسترسی به پیوستها. این روش تمام پردازشهای غیرضروری را دور میزند. مستقیماً به دادههای پیوست در ورودی PST آن پیام میرود و فقط اشیای پیوست را بازسازی میکند. این کار بسیار سریعتر است و حافظه کمتری مصرف میکند، بهویژه اگر بدنه پیام بزرگ باشد (مثلاً HTML با تصاویر جاسازیشده) اما شما فقط به ذخیرهسازی فایلهای پیوست شده علاقهمند باشید. معمولاً targetEntryId را از یک شمارش قبلی یک پوشه دریافت میکنید، همانطور که در مثال اول نشان داده شده است.
دریافت فهرستهای گیرندگان
بهطور مشابه، ممکن است برای یک پیام بدون پردازش بدنه یا سایر ویژگیها، نیاز داشته باشید تا فهرست دریافتکنندگان To، Cc و Bcc را دریافت کنید. متد ExtractRecipients این هدف را بهطور کامل برآورده میکند. این متد یک MapiRecipientCollection برای EntryId پیام مشخصشده برمیگرداند.
نمونه کد
قطعه کد زیر نشان میدهد که چگونه دریافتکنندگان یک پیام را استخراج و نمایش دهید:
توضیح
این متد همان اصل را که متدهای دیگر دارند دنبال میکند. اطلاعات گیرنده بهعنوان یک آیتم جداگانه درون پیام ذخیره میشود. ExtractRecipients فقط این بخش خاص از دادههای پیام را تجزیه میکند. این برای کارهایی مانند ساخت فهرست مخاطبین از تمام ایمیلهای ارسالشده، تحلیل الگوهای ارتباطی یا بررسی اینکه چه کسانی در بحثهای خاص گنجانده شدهاند، ایدهآل است. ویژگی RecipientType (از نوع MapiRecipientType) به شما میگوید آیا گیرنده آدرس اصلی To بوده، CC بوده یا یک گیرنده مخفی BCC بوده، که زمینه ارزشمندی برای برنامه شما فراهم میکند.
نتیجهگیری
ما شما را از طریق رایجترین مؤلفهها و موارد استفادهای که به دور زدن بارگذاری کل پیام MAPI برای دریافت ویژگیهای خاص آن کمک میکند، راهنمایی کردهایم. میتوانید از این رویکرد برای ساخت برنامههای .NET با عملکرد بالا که نیاز به اسکن، تجزیه و تحلیل یا گزارشگیری سریع از صندوقهای پستی بزرگ با مصرف حافظه کم دارند، استفاده کنید.
ما شما را تشویق میکنیم که این بهترین شیوهها را در پروژههای خود ادغام کنید. امروز کتابخانه Aspose.Email for .NET را از NuGet دانلود کنید و کشف کنید که چقدر آسان است تا از پتانسیل کامل فایلهای PST خود بدون بار اضافی استفاده کنید.
همچنین منابع رایگان ما را امتحان کنید:
- مرجع API اطلاعات عمیق درباره کلاسها و متدها را ارائه میدهد.
- مستندات راهنماهای جامع با مثالها را فراهم میکند.
- انجمن پشتیبانی به کاربران امکان میدهد کمک بگیرند و در مورد مسائل بحث کنند.
- وبلاگ بهروزرسانیها، آموزشها و بهترین شیوهها را ارائه میدهد.
