1. مقدمه

GroupDocs.Viewer for .NET کتابخانه‌ای است که به شما امکان می‌دهد پیام ایمیل را در هر فرمت محبوبی وارد کنید، آن را به HTML، PNG، JPEG و PDF رندر کنید و همچنین ویژگی‌های پایه پیام ایمیل را بدون رندر واقعی استخراج کنید.

در واقع، هنگام کار با پیام‌های ایمیل در GroupDocs.Viewer، کاربران باید از دو نوع خاص ایمیل آگاه باشند:

  • کلاس Options.EmailOptions – به شما اجازه می‌دهد نحوه رندر پیام (اندازه صفحه، قالب تاریخ، فیلدها و غیره) را کنترل کنید.
  • کلاس Results.MailMessageViewInfo — توسط GroupDocs.Viewer پس از فراخوانی متد GetViewInfo() تولید می‌شود و متادیتای پیام ایمیل بارگذاری‌شده را در خود نگه می‌دارد.

در ادامه یک راهنمای بسیار سریع برای رندر پیام‌های ایمیل و دریافت متادیتای آن‌ها آورده شده است.


2. بارگذاری یک پیام ایمیل و رندر آن به تمام فرمت‌های خروجی

مثال کوتاه زیر نشان می‌دهد که چگونه پیام ایمیل ورودی «sample.eml» را به نمونه‌ای از کلاس Viewer بارگذاری کرده و سپس به چهار فرمت خروجی پشتیبانی‌شده رندر می‌کنیم: HTML، PDF، PNG و JPEG. همان‌طور که می‌بینید، در ابتدا چهار کلاس گزینهٔ نمایش ایجاد می‌شوند، سپس «sample.eml» با مسیر فایل خود به نمونهٔ Viewer بارگذاری می‌شود و در نهایت چهار فراخوانی Viewer.View() انجام می‌گیرد.

using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;


HtmlViewOptions htmlOptions = HtmlViewOptions.ForEmbeddedResources("html-page{0}.html");
PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");

using (Viewer viewer = new Viewer("sample.eml"))
{
    viewer.View(htmlOptions);
    viewer.View(pdfOptions);
    viewer.View(pngOptions);
    viewer.View(jpegOptions);
}

3. تنظیم گزینه‌های ایمیل برای رندر

مثال بالا رندر را با تمام گزینه‌ها که به مقادیر پیش‌فرضشان تنظیم شده‌اند نشان می‌دهد. با این حال، یک کلاس EmailOptions وجود دارد که در تمام چهار گزینهٔ نمایش (HtmlViewOptions، PdfViewOptions، PngViewOptions، JpgViewOptions) از طریق ویژگی EmailOptions در دسترس است. نیازی به ایجاد دستی یک نمونه از کلاس EmailOptions و اختصاص آن به گزینه‌های نمایش از طریق ویژگی EmailOptions نیست — تمام این کارها به‌صورت خودکار انجام می‌شود و کاربر فقط در صورت نیاز مقدار ویژگی‌ها را تنظیم می‌کند.

چندین ویژگی در کلاس EmailOptions وجود دارد که در ادامه توضیح داده می‌شوند.

3.1. اندازه صفحه

enum PageSize اندازه صفحهٔ خروجی را کنترل می‌کند. به‌صورت پیش‌فرض مقدار Unspecified است — GroupDocs.Viewer اندازه را به مناسب‌ترین حالت تنظیم می‌کند. می‌توان به‌عنوان مثال به این شکل تنظیم کرد:

PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
pdfOptions.EmailOptions.PageSize = PageSize.A1;

3.2. قالب تاریخ و زمان و منطقه زمانی

پیام‌های ایمیل معمولاً دارای تاریخ «ارسال» هستند. ویژگی DateTimeFormat امکان کنترل نحوه قالب‌بندی این مقدار تاریخ‑زمان را می‌دهد و TimeZoneOffset اجازه می‌دهد تا یک جابجایی مثبت یا منفی به این تاریخ‑زمان اعمال شود. مثال زیر:

JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");
jpegOptions.EmailOptions.DateTimeFormat = "MM d yyyy HH:mm tt zzz"; // قالب کاملاً سفارشی
jpegOptions.EmailOptions.TimeZoneOffset = TimeSpan.FromHours(-5); // جابجایی 5 ساعت به عقب

اگر DateTimeFormat را null یا رشتهٔ خالی بگذارید، GroupDocs.Viewer از قالب جاری سیستم استفاده می‌کند.

3.3. تنظیم فیلدها

پیام ایمیل شامل بدنهٔ پیام و فیلدهایی مانند موضوع، تاریخ‑زمان ارسال، فرستنده و غیره است. GroupDocs.Viewer به کاربران اجازه می‌دهد برچسب‌های این فیلدها را از طریق ویژگی FieldTextMap بازنویسی کنند؛ این ویژگی یک مقدار enum Field (مثلاً Field.Subject) را به متنی که در خروجی رندر شده ظاهر می‌شود، نگاشت می‌کند. بنابراین کاربر می‌تواند هر ورودی را جایگزین یا ورودی‌های جدیدی اضافه کند:

PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
pngOptions.EmailOptions.FieldTextMap[Field.Subject] = "موضوع ایمیل";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "ایمیل در زمان زیر ارسال شد";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "فرستنده";

4. بارگذاری ایمیل و دریافت اطلاعات نمایشی آن

می‌توان برخی از مقادیر فیلدهای پیام ایمیل را به‌صورت برنامه‌نویسی بدون رندر خود پیام استخراج کرد. برای این کار کاربر باید سند پیام ایمیل را به نمونهٔ Viewer بارگذاری کند و سپس از متد نمونه‌ای Viewer.GetViewInfo() استفاده کند، همان‌طور که در زیر نشان داده شده است:

using System;
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
using GroupDocs.Viewer.Results;
// ...

using (Viewer viewer = new Viewer("sample.eml"))
{
    ViewInfo generalInfo = viewer.GetViewInfo(ViewInfoOptions.ForHtmlView());
    // تبدیل صریح
    MailMessageViewInfo mailMessageInfo = (MailMessageViewInfo)generalInfo;
    Console.WriteLine("From: {0}; Subject: {1}; Sent: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);

    // در صورت نیاز به هر فرمت خروجی رندر کنید
    viewer.View(HtmlViewOptions.ForEmbeddedResources());
}

قابل مشاهده است که متد Viewer.GetViewInfo() یک نمونه از کلاس عمومی ViewInfo را برمی‌گرداند که سپس به کلاس MailMessageViewInfo تبدیل می‌شود. در حال حاضر فقط فیلدهای From، Subject و Sent پشتیبانی می‌شوند.

Property Type Meaning
Sent DateTime زمان دقیق ارسال ایمیل.
Subject string متنی که در خط موضوع ایمیل ظاهر می‌شود.
From string آدرس ایمیل فرستنده به‌صورت رشتهٔ ساده.

هر سه ویژگی فقط‑خواندنی هستند.

5. خلاصه

  • یک نمونهٔ Viewer ایجاد کنید و فایل پیام ایمیل ورودی را از طریق مسیر یا استریم به سازندهٔ آن بدهید.
  • متد Viewer.GetViewInfo() را فراخوانی کنید و سپس نتیجهٔ آن را به نوع MailMessageViewInfo تبدیل کنید تا متادیتاهای Sent، Subject و From را دریافت کنید.
  • از EmailOptions برای تغییر اندازه صفحه، قالب تاریخ، جابجایی منطقه زمانی یا برچسب متنی نمایش داده‌شده برای هر فیلد استفاده کنید و سپس متد Viewer.View() را فراخوانی کنید.

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

مطالب مرتبط

دریافت نسخه آزمایشی رایگان

می‌توانید نسخهٔ آزمایشی رایگان GroupDocs.Viewer for .NET را از releases.groupdocs.com دانلود کنید. همچنین می‌توانید یک لایسنس موقت برای امتحان تمام ویژگی‌ها و عملکردها بدون محدودیت از اینجا دریافت کنید.