1. บทนำ

GroupDocs.Viewer for .NET library ให้คุณนำเข้าอีเมลในรูปแบบใดก็ได้ที่เป็นที่นิยม, แปลงเป็น HTML, PNG, JPEG, และ PDF, และยังสามารถสกัดคุณสมบัติพื้นฐานของอีเมลโดยไม่ต้องทำการแปลงจริง

โดยจริง ๆ แล้วเมื่อทำงานกับอีเมลใน GroupDocs.Viewer ผู้ใช้ควรรับรู้เกี่ยวกับสองประเภทที่เฉพาะเจาะจงสำหรับอีเมล:

  • คลาส Options.EmailOptions – ใช้ควบคุมวิธีการแปลงข้อความ (ขนาดหน้า, รูปแบบวันที่, ฟิลด์ ฯลฯ)
  • Results.MailMessageViewInfo — ถูกสร้างโดย GroupDocs.Viewer หลังจากเรียกเมธอด GetViewInfo() และเก็บเมตาดาต้าเกี่ยวกับอีเมลที่โหลด

ด้านล่างเป็นคำแนะนำสั้น ๆ ที่แสดงวิธีการแปลงอีเมลและดึงเมตาดาต้าของมัน


2. โหลดอีเมลและแปลงเป็นรูปแบบผลลัพธ์ทั้งหมด

ตัวอย่างโค้ดสั้น ๆ ด้านล่างแสดงการโหลดไฟล์อีเมลอินพุต “sample.eml” ไปยังอินสแตนซ์ของคลาส Viewer แล้วแปลงเป็นรูปแบบผลลัพธ์ 4 แบบที่รองรับ: HTML, PDF, PNG, และ JPEG ตามลำดับ โดยเริ่มต้นจะสร้างอ็อบเจ็กต์ของตัวเลือกการมองเห็นทั้ง 4 ตัว, จากนั้นโหลด “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 ซึ่งสามารถเข้าถึงได้จากตัวเลือกการมองเห็นทั้ง 4 (HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) ผ่านคุณสมบัติ EmailOptions ไม่จำเป็นต้องสร้างอินสแตนซ์ของ EmailOptions ด้วยตนเองและกำหนดให้กับตัวเลือกการมองเห็น — ทั้งหมดนี้ทำให้โดยอัตโนมัติแล้ว ผู้ใช้เพียงแค่ปรับค่าคุณสมบัติตามต้องการ

มีหลายคุณสมบัติในคลาส EmailOptions ซึ่งอธิบายด้านล่าง

3.1. ขนาดหน้า

ควบคุมขนาดของหน้าผลลัพธ์ โดยค่าเริ่มต้นคือ Unspecified — GroupDocs.Viewer จะปรับขนาดให้เหมาะสมที่สุด สามารถตั้งค่าได้ดังนี้เป็นตัวอย่าง

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

3.2. รูปแบบวันที่และเวลาและโซนเวลา

อีเมลมักมีวันที่ “ส่ง” (Sent) ค่าคุณสมบัติ 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] = "Email Subject";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "Mail was sent at";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "Sender";

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 เท่านั้น

คุณสมบัติ ประเภท ความหมาย
Sent DateTime เวลาแน่นอนที่อีเมลถูกส่ง
Subject string ข้อความที่ปรากฏในหัวเรื่องของอีเมล
From string ที่อยู่อีเมลของผู้ส่งในรูปแบบสตริงธรรมดา

คุณสมบัติทั้งสามเป็นแบบอ่าน‑อย่างเดียว (read‑only)

5. สรุป

  • สร้างอินสแตนซ์ Viewer และระบุไฟล์อีเมลอินพุตให้กับคอนสตรัคเตอร์โดยใช้เส้นทางหรือสตรีม
  • เรียกเมธอด Viewer.GetViewInfo แล้วแคสต์ผลลัพธ์เป็นประเภท MailMessageViewInfo เพื่อดึงเมตาดาต้า: ฟิลด์ Sent, Subject, และ From
  • ใช้ EmailOptions เพื่อเปลี่ยนขนาดหน้า, รูปแบบวันที่, การชดเชยโซนเวลา, หรือข้อความป้ายชื่อของฟิลด์ใด ๆ แล้วเรียกเมธอด Viewer.View()

ขั้นตอนเหล่านี้จะให้คุณเข้าถึงคุณสมบัติหลักของอีเมลและควบคุมวิธีการแสดงผลของข้อความเมื่อทำการแปลง ไม่ต้องใช้ไลบรารีเพิ่มเติมหรือโค้ดซับซ้อน

ดูเพิ่มเติม

ดาวน์โหลดรุ่นทดลองฟรี

คุณสามารถดาวน์โหลดรุ่นทดลองฟรีของ GroupDocs.Viewer for .NET ได้จาก releases.groupdocs.com. คุณยังสามารถรับใบอนุญาตชั่วคราวเพื่อทดลองใช้คุณสมบัติและฟังก์ชันทั้งหมดโดยไม่มีข้อจำกัดจาก here.