بازیابی و فهرست کردن ایمیل‌ها از سرور IMAP

بازیابی و فهرست‌کردن پیام‌ها

چگونگی به‌دست آوردن اطلاعات شناسایی پیام‌ها در یک صندوق‌پست

هنگام بازیابی و پردازش پیام‌های ایمیل، می‌توانید اطلاعات شناسایی دقیق مانند شماره توالی و شناسه‌های یکتا را با استفاده از ویژگی‌های زیر که در جدیدترین نسخه Aspose.Email برای .NET موجود است، به‌دست آورید:

Aspose.Email.ImapMessageInfo کلاس: اطلاعات شناسایی یک پیام در صندوق‌پست IMAP را نشان می‌دهد.

ImapMessageInfo.SequenceNumber ویژگی: شماره توالی پیام را بازیابی می‌کند.

ImapMessageInfo.UniqueId ویژگی: شناسه یکتای پیام را بازیابی می‌کند.

Aspose.Email.MailMessage.ItemId ویژگی: نمایانگر اطلاعات شناسایی اضافی درباره پیام درون صندوق‌پست است.

قطعه کد زیر نشان می‌دهد چگونه اطلاعات شناسایی پیام‌ها در یک صندوق‌پست IMAP به‌دست آید:

  1. یک نمونه از ImapClient کلاس با ارائه پارامترهای لازم مانند میزبان سرور IMAP، پورت، آدرس ایمیل، رمز عبور و گزینه‌های امنیتی.
  2. از ListMessages متد برای بازیابی فهرست پیام‌ها از پوشه "INBOX". فهرست را با استفاده از متد Take(5) به اولین پنج پیام محدود کنید.
  3. با استفاده از … شماره‌های توالی پیام‌های فهرست‌شده را استخراج کنید. SequenceNumber ویژگی هر پیام.
  4. از FetchMessages متد برای دریافت جزئیات کامل پیام‌ها از سرور، با استفاده از شماره‌های توالی به‌دست آمده در مرحله قبل.
  5. در پیام‌های بازیابی‌شده حلقه بزنید و برای هر پیام، اطلاعات زیر را بازیابی و نمایش دهید:
  • شماره توالی پیام.
  • ویژگی ItemId.SequenceNumber.
  • موضوع پیام.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
    // List the first 5 messages from the inbox
    var msgs = client.ListMessages("INBOX").Take(5);
    
    // Get sequence numbers of the messages
    var seqIds = msgs.Select(t => t.SequenceNumber);
    
    // Fetch messages based on sequence numbers
    var msgsViaFetch = client.FetchMessages(seqIds);
    
    for (var i = 0; i < 5; i++)
    {
        var thisMsg = msgsViaFetch[i];
        Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
    }
}

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

ImapMessageInfo MIME را فراهم می‌کند MessageId برای شناسایی پیام بدون استخراج کامل پیام. کد زیر نشان می‌دهد چگونه شناسهٔ پیام MIME را لیست کنیم.

لیست پیام‌ها از سرور

Aspose.Email یک نسخهٔ overload شدهٔ ۲ عضوی از ListMessages() برای بازیابی تعداد مشخصی از پیام‌ها بر پایه یک پرس‌و‌جو. قطعه کد زیر نشان می‌دهد چگونه پیام‌ها را فهرست کنید.

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

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

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

ImapClient ارائه می‌دهد یک UseMultiConnection ویژگی که می‌تواند برای ایجاد چندین اتصال برای عملیات سنگین استفاده شود. همچنین می‌توانید با استفاده از ImapClient.ConnectionsQuantity. کد زیر استفاده از حالت چند‑اتصال برای لیست کردن پیام‌ها را نشان می‌دهد و عملکرد آن را با حالت اتصال تک مقایسه می‌کند.

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

در موقعیت‌هایی که سرور ایمیل حاوی تعداد زیادی پیام در صندوق‌پست است، معمولاً خواستار لیست یا بازیابی پیام‌ها با پشتیبانی از صفحه‌بندی می‌شود. API‌های Aspose.Email ImapClient به شما امکان می‌دهد پیام‌ها را از سرور با پشتیبانی از صفحه‌بندی بازیابی کنید.

لیست پیوست‌های پیام

برای دریافت اطلاعات درباره پیوست‌ها مانند نام و اندازه بدون دریافت داده‌های پیوست، API‌های زیر را امتحان کنید:

  • Aspose.Email.Clients.Imap.ImapAttachmentInfo - نمایانگر اطلاعات یک پیوست.
  • Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - نمایانگر یک مجموعه از ImapAttachmentInfo کلاس.
  • Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - اطلاعاتی برای هر پیوست در یک پیام دریافت می‌کند.

نمونه کد با مراحل زیر نشان می‌دهد چگونه از API‌ها استفاده کنید:

  1. متد را فراخوانی کنید ListMessages() متد روی شیء imapClient. این متد یک ImapMessageInfoCollection باز می‌گرداند که شامل اطلاعات پیام‌های موجود در صندوق‌پست است.
  2. با استفاده از حلقه foreach، بر روی هر پیام در مجموعه messageInfoCollection تکرار کنید.
  3. متد را فراخوانی کنید ListAttachments() متد روی شیء imapClient، با ارسال ویژگی SequenceNumber از شیء پیام به عنوان پارامتر. این متد یک ImapAttachmentInfoCollection باز می‌گرداند که شامل اطلاعات پیوست‌های پیام است.
  4. با استفاده از حلقه foreach، بر روی هر پیوست در مجموعه attachmentInfoCollection تکرار کنید.
  5. درون حلقه داخلی، می‌توانید به اطلاعات هر پیوست با استفاده از خصوصیات شیء attachmentInfo دسترسی پیدا کنید.
var messageInfoCollection = imapClient.ListMessages();
    
foreach (var message in messageInfoCollection)
{
    var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);

    foreach (var attachmentInfo in attachmentInfoCollection)
    {
        Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
    }
}

دریافت و ذخیره پیام‌ها

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

این ImapClient کلاس می‌تواند پیام‌ها را از یک سرور IMAP دریافت کرده و آن‌ها را در قالب EML بر روی دیسک محلی ذخیره کند. مراحل زیر برای ذخیره پیام‌ها بر روی دیسک ضروری است:

  1. یک نمونه از ImapClient کلاس.
  2. در ImapClient، نام میزبان، پورت، نام کاربری و گذرواژه را مشخص کنید constructor.
  3. پوشه را با استفاده از SelectFolder() متد.
  4. متد را فراخوانی کنید ListMessages متد برای دریافت ImapMessageInfoCollection شیء.
  5. درون ImapMessageInfoCollection مجموعه، فراخوانی کنید SaveMessage() متد که مسیر خروجی و نام فایل را تعیین می‌کند.

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

دریافت پیام‌ها به ترتیب نزولی

Aspose.Email ارائه می‌دهد ImapClient.ListMessagesByPage متد که پیام‌ها را با پشتیبانی از صفحه‌بندی فهرست می‌کند. برخی بارگذاری‌های  ImapClient.ListMessagesByPage پذیرش PageSettings به عنوان پارامتر. PageSettings یک  AscendingSorting خاصیتی که وقتی به false تنظیم شود، ایمیل‌ها را به ترتیب نزولی باز می‌گرداند.

کد مثال زیر نحوه استفاده از  AscendingSorting ویژگی PageSettings کلاس برای تغییر ترتیب ایمیل‌ها.

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

برای ذخیره ایمیل‌ها در فرمت MSG، ImapClient.FetchMessage() متد باید فراخوانی شود. پیام را در یک نمونه از MailMessage کلاس. MailMessage.Save() متد می‌تواند سپس برای ذخیره پیام به فرمت MSG فراخوانی شود. کد زیر نشان می‌دهد چگونه پیام‌ها را در قالب MSG ذخیره کنید.

گروه‌بندی پیام‌های دریافت‌شده

ImapClient ارائه می‌دهد یک FetchMessages متدی که یک iterable از شماره‌های توالی یا شناسهٔ یکتا می‌پذیرد و فهرستی از MailMessage. قطعه کد زیر استفاده از FetchMessages متد برای بازیابی پیام‌ها بر اساس شماره توالی و شناسهٔ یکتا.

دریافت پوشه‌ها و خواندن پیام‌ها به صورت بازگشتی

در این مقاله، بیشتر ImapClient ویژگی‌ها برای ساخت برنامه‌ای استفاده می‌شوند که تمام پوشه‌ها و زیرپوشه‌ها را به صورت بازگشتی از سرور IMAP لیست می‌کند. همچنین پیام‌ها را در هر پوشه و زیرپوشه به فرمت MSG بر روی دیسک محلی ذخیره می‌کند. در دیسک، پوشه‌ها و پیام‌ها همان ساختار سلسله‌مراتبی سرور IMAP ایجاد و ذخیره می‌شوند. قطعه کد زیر نشان می‌دهد چگونه به صورت بازگشتی پیام‌ها و اطلاعات زیرپوشه‌ها را دریافت کنید.

پردازش اطلاعات خاص پیام

استخراج پارامترهای اضافی به عنوان اطلاعات خلاصه

دریافت اطلاعات سرصفحه List-Unsubscribe

هدر List-Unsubscribe شامل URL برای لغو اشتراک از لیست‌های ایمیل مانند تبلیغات، خبرنامه‌ها و غیره است. برای دریافت هدر List-Unsubscribe، از ListUnsubscribe ویژگی ImapMessageInfo کلاس. مثال زیر نحوه استفاده از آن را نشان می‌دهد ListUnsubscribe ویژگی برای دریافت هدر List-Unsubscribe.