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 클래스 인스턴스로 로드한 뒤, 지원되는 4가지 출력 형식(HTML, PDF, PNG, JPEG)으로 모두 렌더링하는 방법을 보여줍니다. 처음에 4개의 뷰 옵션 클래스가 인스턴스화되고, 파일 경로를 통해 Viewer 인스턴스에 “sample.eml"이 로드된 뒤, 4개의 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 클래스가 존재하며, 이는 4가지 뷰 옵션(HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) 모두에서 EmailOptions 속성을 통해 사용할 수 있습니다. 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
이메일 메시지는 일반적으로 “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. Adjusting fields
메일 메시지는 본문과 함께 제목, 전송 날짜‑시간, 발신자 등 여러 필드를 포함합니다. GroupDocs.Viewer는 FieldTextMap 속성을 통해 이러한 필드의 레이블을 재정의할 수 있게 합니다. 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());
// explicit casting
MailMessageViewInfo mailMessageInfo = (MailMessageViewInfo)generalInfo;
Console.WriteLine("From: {0}; Subject: {1}; Sent: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);
// Render to any output format if needed
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
You can download a free trial version of GroupDocs.Viewer for .NET from releases.groupdocs.com. You can also acquire a temporary license to try all features and functionalities without restrictions from here.