1. 소개

GroupDocs.Viewer for .NET 라이브러리를 사용하면 이메일 메시지를 any popular format에서 가져와 HTML, PNG, JPEG, PDF로 렌더링하고 실제 렌더링 없이 기본 이메일 메시지 속성을 추출할 수 있습니다.

실제로 GroupDocs.Viewer에서 이메일 메시지를 다룰 때 사용자는 두 가지 이메일 전용 타입을 알아야 합니다:

  • Options.EmailOptions 클래스 – 페이지 크기, 날짜 형식, 필드 등 메시지가 어떻게 렌더링될지 제어합니다.
  • Results.MailMessageViewInfo 클래스 — GetViewInfo() 메서드를 호출한 후 GroupDocs.Viewer가 생성하며, 로드된 이메일 메시지에 대한 메타데이터를 보유합니다.

아래는 이메일 메시지를 렌더링하고 메타데이터를 가져오는 매우 간단한 가이드입니다.


2. 이메일 메시지를 로드하고 모든 출력 형식으로 렌더링하기

아래의 짧은 코드 예제는 입력 이메일 메시지 sample.emlViewer 클래스 인스턴스로 로드한 뒤, 지원되는 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. 렌더링을 위한 이메일 옵션 조정

위 예제는 모든 옵션이 기본값으로 설정된 상태에서 렌더링하는 방법을 보여줍니다. 그러나 EmailOptions 클래스가 존재하며, 이는 4가지 뷰 옵션(HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) 모두에서 EmailOptions 속성을 통해 사용할 수 있습니다. EmailOptions 클래스를 직접 인스턴스화하여 뷰 옵션에 할당할 필요가 없으며—이미 내부에서 처리되고 있으니, 필요에 따라 속성 값을 조정하기만 하면 됩니다.

EmailOptions 클래스에는 아래와 같이 여러 속성이 있습니다.

3.1. 페이지 크기

Enum PageSize 은 출력 페이지의 크기를 제어합니다. 기본값은 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시간 이전으로 이동

DateTimeFormatnull 또는 빈 문자열로 두면 GroupDocs.Viewer는 시스템 현재 형식을 사용합니다.

3.3. 필드 조정

메일 메시지는 본문과 함께 제목, 전송 날짜‑시간, 발신자 등 여러 필드를 포함합니다. GroupDocs.Viewer는 FieldTextMap 속성을 통해 이러한 필드의 레이블을 재정의할 수 있게 합니다. 이 속성은 Field 열거형 값(예: Field.Subject)을 Dictionary에 표시되는 텍스트와 매핑합니다. 따라서 사용자는 기존 항목을 교체하거나 새 항목을 추가할 수 있습니다:

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 발신자의 이메일 주소(단순 문자열).

세 속성 모두 읽기 전용입니다.

5. 요약

  • Viewer 인스턴스를 생성하고 생성자에 경로나 스트림을 통해 입력 이메일 파일을 지정합니다.
  • Viewer.GetViewInfo() 메서드를 호출하고 결과를 MailMessageViewInfo 타입으로 형변환하여 Sent, Subject, From 메타데이터를 가져옵니다.
  • EmailOptions를 사용해 페이지 크기, 날짜 형식, 시간대 오프셋 또는 필드 레이블을 변경한 뒤 Viewer.View() 메서드를 호출합니다.

이 단계들을 통해 핵심 이메일 속성을 얻고, 렌더링 시 메시지 표시 방식을 제어할 수 있습니다. 별도의 라이브러리나 복잡한 코드는 필요하지 않습니다.

참고

무료 체험 받기

GroupDocs.Viewer for .NET의 무료 체험 버전을 releases.groupdocs.com에서 다운로드할 수 있습니다. 또한 here에서 제한 없이 모든 기능을 시험해볼 수 있는 임시 라이선스를 획득할 수 있습니다.