1. Introduction

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

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

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

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


2. Load an email message and render it to all output formats

مثال کوتاه کد زیر نشان می‌دهد که چگونه پیام ایمیل ورودی «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. Tuning email options for rendering

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

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

3.1. Page size

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

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

3.2. Date and time format and time zone

پیام‌های ایمیل معمولاً تاریخ «ارسال» دارند. ویژگی 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. Adjusting fields

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

PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
pngOptions.EmailOptions.FieldTextMap[Field.Subject] = "Email Subject";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "Mail was sent at";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "Sender";

4. Load an email and get its view information

می‌توانید برخی از مقادیر فیلدهای پیام ایمیل را به‌صورت برنامه‌نویسی بدون رندر کردن خود پیام دریافت کنید. برای این کار کاربر باید سند پیام ایمیل را به نمونهٔ 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. Summary

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

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

See Also

Get a free trial

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