메시지 로드 및 저장

이메일 메시지 로드 및 저장

파일 형식 감지

Aspose.Email API는 제공된 메시지 파일의 파일 형식을 감지하는 기능을 제공합니다. The DetectFileFormat 메서드 FileFormatUtil 이 작업을 수행할 수 있는 클래스입니다. 다음 클래스와 메서드를 사용하여 로드된 파일 형식을 감지할 수 있습니다.

다음 코드 스니펫은 파일 형식을 감지하는 방법을 보여줍니다.

이메일 메시지 로드

특정 로드 옵션으로 메시지를 로드하려면 Aspose.Email가 제공합니다. LoadOptions 다음과 같이 사용할 수 있는 클래스:

로드 중 임베디드 메시지 형식 보존

이메일 메시지 저장 및 변환

Aspose.Email를 사용하면 모든 메시지 유형을 다른 형식으로 쉽게 변환할 수 있습니다. 이 기능을 보여주기 위해 이 문서의 코드는 디스크에서 세 종류의 메시지를 로드하고 다른 형식으로 다시 저장합니다. 기본 클래스 SaveOptions 및 클래스 EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions 저장 시 추가 설정을 위해 MailMessage 다른 형식으로 메시지를 저장하는 데 사용할 수 있습니다. 이 문서는 이러한 클래스를 사용하여 샘플 이메일을 다음과 같이 저장하는 방법을 보여줍니다:

  • EML 형식.
  • Outlook MSG.
  • MHTML 형식.
  • HTML 형식.

이메일 메시지 로드 및 저장

다음 코드 스니펫은 EML 메시지를 로드하고 동일한 형식으로 디스크에 저장하는 방법을 보여줍니다.

원본 경계를 보존하며 이메일 메시지 로드 및 저장

다음 코드 스니펫은 원본 경계를 보존하면서 EML을 로드하고 EML로 저장하는 방법을 보여줍니다.

TNEF 첨부 파일을 보존하며 EML로 저장

다음 코드 스니펫은 TNEF 첨부 파일을 보존하면서 EML로 저장하는 방법을 보여줍니다.

EML을 MSG로 저장

다음 코드 스니펫은 EML 메시지를 로드하고 적절한 옵션을 사용하여 MSG로 변환하는 방법을 보여줍니다: SaveOptions.

날짜 보존하면서 EML을 MSG로 저장

다음은 MsgSaveOptions 이 클래스는 날짜를 보존하면서 소스 메시지를 Outlook 메시지 파일(MSG)로 저장할 수 있게 해줍니다. 다음 코드 스니펫은 날짜를 보존하며 MSG로 저장하는 방법을 보여줍니다.

EML을 MHTML로 저장

원하는 결과를 얻기 위해 다양한 MHTML 옵션을 사용할 수 있습니다. 다음 코드 스니펫은 EML 메시지를 로드하는 방법을 보여줍니다: MailMessage 그리고 UTC 시스템의 메시지 날짜와 함께 MHTML로 변환합니다.

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);

// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
    mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}

EML 저장 시 MHT 헤더 전역 형식 지정

Aspose.Email를 사용하면 MHT 헤더에 대한 전역 형식 옵션을 사용할 수 있습니다. 전역 옵션은 모든 MHT 헤더에 공통 형식을 설정합니다. MhtSaveOptions 인스턴스. 이 기능은 각 인스턴스마다 형식을 설정하는 것을 방지하도록 설계되었습니다. MhtSaveOptions.

다음 메서드를 사용합니다: GlobalFormattingOptions 클래스와 아래 코드 샘플은 MHT 헤더의 형식을 설정합니다:

// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();

옵션 설정으로 EML을 MHTML로 변환

다음은 MhtSaveOptions 이 클래스는 이메일 메시지를 MHTML 형식으로 저장하기 위한 추가 옵션을 제공합니다. 열거형 MhtFormatOptions 추가 이메일 정보를 출력 MHTML에 기록할 수 있게 합니다. 다음 추가 필드를 기록할 수 있습니다:

  • WriteHeader - 이메일 헤더를 출력 파일에 씁니다.
  • WriteOutlineAttachments - 개요 첨부 파일을 출력 파일에 씁니다.
  • WriteCompleteEmailAddress - 전체 이메일 주소를 출력 파일에 씁니다.
  • NoEncodeCharacters - 문자에 대한 전송 인코딩을 사용하지 않아야 합니다.
  • HideExtraPrintHeader - 출력 파일 상단의 추가 인쇄 헤더를 숨깁니다.
  • WriteCompleteToEmailAddress - 수신자의 전체 이메일 주소를 출력 파일에 씁니다.
  • WriteCompleteFromEmailAddress - 발신자의 전체 이메일 주소를 출력 파일에 씁니다.
  • WriteCompleteCcEmailAddress - 참조 수신자의 전체 이메일 주소를 출력 파일에 씁니다.
  • WriteCompleteBccEmailAddress - 숨은 참조 수신자의 전체 이메일 주소를 출력 파일에 씁니다.
  • RenderCalendarEvent - 캘린더 이벤트의 텍스트를 출력 파일에 씁니다.
  • SkipByteOrderMarkInBody - 바이트 순서 표시(BOM) 바이트를 출력 파일에 씁니다.
  • RenderVCardInfo - VCard AlternativeView의 텍스트를 출력 파일에 씁니다.
  • DisplayAsOutlook - From 헤더를 표시합니다.
  • RenderTaskFields - 특정 작업 필드를 출력 파일에 씁니다.
  • 없음 - 설정이 지정되지 않음.

다음 코드 스니펫은 선택적 설정을 사용하여 EML 파일을 MHTML로 변환하는 방법을 보여줍니다.

MHTML로 변환하면서 캘린더 이벤트 렌더링

다음은 MhtFormatOptions.RenderCalendarEvent 캘린더 이벤트를 출력 MHTML에 렌더링합니다. 다음 코드 스니펫은 MHTML로 변환하면서 캘린더 이벤트를 렌더링하는 방법을 보여줍니다.

인라인 이미지 없이 이메일을 MHT로 내보내기

맞춤형 시간대로 이메일을 MHT로 내보내기

MailMessage class는 다음을 제공합니다 setTimeZoneOffset MHT로 내보낼 때 사용자 지정 시간대를 설정하는 속성입니다. 다음 코드 스니펫은 사용자 지정 시간대로 이메일을 MHT로 내보내는 방법을 보여줍니다.

MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());

// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);

MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);

이메일을 EML로 내보내기

다음 코드 스니펫은 이메일을 EML로 내보내는 방법을 보여줍니다.

이메일을 HTML로 저장

다음은 HtmlSaveOptions 클래스는 메시지 본문을 HTML로 내보내는 기능을 제공합니다. 다음 코드 스니펫은 메시지를 HTML로 저장하는 방법을 보여줍니다.

리소스에 상대 경로를 사용하여 이메일 메시지를 HTML로 저장

이메일 메시지를 HTML 형식으로 내보낼 때 이메일 리소스를 상대 경로로 저장하도록 선택할 수 있습니다. 이 기능은 출력 HTML 파일에서 리소스가 연결되는 방식을 보다 유연하게 하여 다양한 시스템에서 저장된 이메일을 공유하고 표시하기 쉽게 합니다. HtmlSaveOptions.UseRelativePathToResources 이 속성은 리소스를 상대 경로로 저장할 수 있는 기능을 제공합니다. 기본값은 false이며(리소스가 절대 경로로 저장됨), true 로 설정하면 리소스가 상대 경로로 저장됩니다. 상대 경로를 가진 HTML 파일은 더 포터블하며 호스팅 환경의 파일 구조에 관계없이 올바르게 표시됩니다. 요구 사항에 따라 절대 경로나 상대 경로 중 선택할 수 있습니다. 리소스에 대한 사용자 정의 경로는 다음을 사용하여 정의할 수 있습니다. ResourceHtmlRenderingHandler 이벤트.

리소스를 기본 상대 경로로 저장

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);

msg.save("target.html", htmlSaveOptions);

이 경우, 리소스는 [html 파일 이름].files 폴더에 .html 파일과 동일한 경로에 저장되며 HTML은 상대 경로를 통해 리소스를 참조합니다.

리소스에 절대 경로로 저장

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

msg.save("target.html", htmlSaveOptions);

첫 번째 경우와 같이, 리소스는 기본적으로 [html 파일 이름].files 폴더에 저장되지만 HTML은 절대 경로를 사용하여 리소스를 참조합니다.

ResourceHtmlRenderingHandler 이벤트를 사용한 사용자 정의 상대 경로

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
    @Override
    public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
        if (sender instanceof AttachmentBase) {
            AttachmentBase attachment = (AttachmentBase) sender;
            // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
            args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
        }
    }
});

msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);

사용하여 ResourceHtmlRenderingHandler 이벤트를 사용하면 리소스에 대해 사용자 정의 상대 경로나 절대 경로를 설정할 수 있습니다. 경로를 사용자 정의할 때 ResourceHtmlRenderingHandler 이벤트 핸들러이며, 그리고 UseRelativePathToResources true 로 설정되면, 상대 경로를 지정해야 합니다. PathToResourceFile 정확한 참조를 보장하기 위한 속성입니다.

HTML로 변환하는 동안 메시지의 맞춤 아이콘 보존

때때로 메시지에 인라인 첨부 파일이 포함되어 있으며, 이는 메시지 본문에 아이콘 이미지로 표시됩니다. 이러한 메시지를 HTML로 변환할 때 아이콘 이미지가 손실되어 문제가 발생할 수 있습니다. 이는 첨부 파일의 아이콘이 메시지에 직접 포함되지 않기 때문입니다.

Aspose.Email 사용자는 메시지를 HTML로 변환할 때 첨부 파일 아이콘을 사용자 정의할 수 있습니다. 이를 위해서는 HtmlSaveOptions.ResourceHtmlRendering 이벤트는 이메일 메시지를 HTML 파일로 저장할 때 리소스 파일(예: 첨부 파일)의 렌더링을 사용자 정의하는 데 사용됩니다. 아래 코드 샘플에서 이벤트 핸들러는 첨부 파일의 콘텐츠 유형에 따라 리소스 파일(아이콘)의 경로를 동적으로 설정하는 데 사용됩니다. 이를 통해 파일 유형에 따라 HTML 출력에서 리소스를 맞춤 렌더링할 수 있습니다.


 HtmlSaveOptions options = new HtmlSaveOptions();

options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {

   @Override

   public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {

        AttachmentBase attachment = (AttachmentBase) sender;

        e.setCaption(attachment.getContentType().getName());

       if (attachment.getContentType().getName().endsWith(".pdf")) {

            e.setPathToResourceFile("pdf_icon.png");

       } else if (attachment.getContentType().getName().endsWith(".docx")) {

            e.setPathToResourceFile("word_icon.jpg");

       } else if (attachment.getContentType().getName().endsWith(".jpg")) {

            e.setPathToResourceFile("jpeg_icon.png");

       } else {

            e.setPathToResourceFile("not_found_icon.png");

       }

   }

});

options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);

String fileName = "message.msg";

MailMessage mailMessage = MailMessage.load(fileName);

mailMessage.save("fileName.html", options);

EML을 HTML로 저장할 때 시간 및 시간대 설정

Aspose.Email 사용자는 시간 및 시간대 표시 형식을 설정할 수 있습니다. HtmlSaveOptions. The HeadersFormattingOptions 클래스는 MailMessage를 Mhtml 또는 Html 형식으로 저장할 때 헤더 서식 옵션을 지정할 수 있습니다. 다음 메서드들은 HtmlFormatOptions 클래스는 출력 파일에 표시될 필드를 지정합니다:

  • RenderCalendarEvent - 캘린더 이벤트의 텍스트가 출력 mhtml에 기록되어야 함을 나타냅니다.
  • RenderVCardInfo - VCard AlternativeView의 텍스트가 출력 HTML에 기록되어야 함을 나타냅니다.

다음 코드 샘플은 EML을 HTML로 저장할 때 시간 및 시간대를 설정하는 방법을 보여줍니다:

MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");

리소스를 포함하지 않고 HTML로 저장

메시지를 Outlook 템플릿(.oft) 파일로 저장

다음 코드 스니펫은 메시지를 Outlook 템플릿(.oft) 파일로 저장하는 방법을 보여줍니다.