1. 제품
  2.   Aspose.Email
  3.   Aspose.Email FOSS for C++

Aspose.Email FOSS - Aspose.Email C++용 FOSS

C++에서 Outlook MSG 파일 및 CFB 컨테이너를 읽고, 생성하고, 처리합니다 — 무료 오픈소스이며, Microsoft Outlook에 의존하지 않습니다.

MSG 및 CFB 파일용 오픈소스 C++ 라이브러리

Aspose.Email FOSS for C++는 Microsoft Outlook .msg 파일 및 Compound File Binary (CFB) 컨테이너를 다루기 위한 MIT 라이선스 오픈소스 C++ 라이브러리입니다. CMake를 통해 헤더를 포함하고 Microsoft Outlook이나 독점 런타임을 설치하지 않고도 즉시 이메일 메시지를 읽고, 생성하고, 처리할 수 있습니다.

이 라이브러리는 두 가지 수준의 액세스를 제공합니다. 낮은 수준에서는 cfb_readercfb_writer가 CFB 바이너리 컨테이너에 대한 완전한 제어를 제공하며 — 디렉터리 항목을 탐색하고, 스토리지 노드와 스트림 데이터를 읽고 쓰며, 원시 섹터 레이아웃을 검사합니다. msg_readermsg_writer는 CFB 위에 있는 MSG 형식을 처리하여 MAPI 속성 스트림, 수신자 테이블 및 첨부 파일 하위 스토리지를 노출합니다. 높은 수준에서는 mapi_message를 사용하여 처음부터 새 메시지를 만들고, 제목, 본문, 수신자 및 첨부 파일을 읽으며, MSG와 EML 형식 간에 변환할 수 있습니다. 이 라이브러리는 C++17 컴파일러가 있는 모든 플랫폼에서 빌드되며 외부 종속성이 없어 Windows, Linux, macOS, Docker 컨테이너 및 임베디드 시스템에 적합합니다. 추가 기능이 포함된 엔터프라이즈 에디션은 Aspose.Email for C++으로 제공됩니다.

CFB 컨테이너 읽기 및 쓰기

  • CFB 파일 열기: 파일 경로, 스트림 또는 바이트 배열을 통해 cfb_reader::from_file(), cfb_reader::from_stream(), 또는 cfb_reader::from_bytes() 로 기존 CFB 컨테이너를 로드합니다.
  • 디렉터리 트리를 탐색하십시오: storage_ids(), stream_ids(), child_ids()를 사용하여 스토리지와 스트림을 열거하고, resolve_path()를 사용하여 중첩된 계층 구조를 탐색합니다.
  • 노드 검사: cfb_node::is_storage()cfb_node::is_stream()로 노드 유형을 확인하고, creation_time()modified_time()을 통해 타임스탬프를 읽습니다.
  • CFB 컨테이너 쓰기: cfb_document을(를) 사용하여 CFB 문서를 프로그래밍 방식으로 빌드하고 cfb_writer::to_bytes() 또는 cfb_writer::write_file()을(를) 통해 바이트 또는 파일로 직렬화합니다.

CFB 액세스가 사용되는 위치

  • MSG 파일 검사: CFB는 Outlook .msg 파일의 컨테이너 형식이며 — 직접 CFB 액세스를 통해 포렌식 검사 및 복구가 가능합니다.
  • Custom binary formats: CFB를 데이터 저장에 사용하는 모든 레거시 애플리케이션은 COM 종속성 없이 읽거나 쓸 수 있습니다.
  • 데이터 복구: 전체 디렉터리 트리를 탐색하고 손상되었거나 비표준 CFB 파일에서 원시 스트림 바이트를 추출합니다.

MSG 파일 읽기 및 쓰기

  • Read MSG files: Outlook MSG 파일을 msg_reader::from_file() 또는 msg_reader::from_stream() 로 열고 기본 MAPI 속성 스트림 및 첨부 서브 스토리지에 액세스합니다.
  • Write MSG files: msg_document를 사용하여 msg_writer::to_bytes() 또는 msg_writer::write_file()와 함께 MSG 파일을 생성합니다.
  • MSG 문서 검사: msg_document::major_version(), msg_document::minor_version()를 통해 버전 메타데이터에 접근하고, msg_document::strict()로 엄격성을 확인합니다.
  • CFB로 변환: MSG 파일에서 기본 CFB 문서를 msg_document::to_cfb_document()을(를) 통해 추출합니다.

MSG 처리가 사용되는 위치

  • Email archival pipelines: 아카이브 디렉터리에서 .msg 파일을 대량 읽고 메타데이터 또는 첨부 파일을 추출합니다.
  • 마이그레이션 도구: MSG 컬렉션을 표준 형식으로 변환하여 Outlook이 아닌 시스템에 가져올 수 있도록 합니다.
  • Legal discovery: 원시 MAPI 속성 스트림을 구문 분석하여 비표준 속성을 포함한 모든 메시지 필드를 추출합니다.

고수준 MAPI 메시지 API

  • 메시지 만들기: mapi_message::create()를 사용하여 전체 이메일을 작성하고, 그런 다음 set_subject(), set_body(), set_html_body()을 통해 제목, 본문 및 HTML 본문을 설정합니다.
  • 보내는 사람 세부 정보 설정: 발신 메시지를 위해 set_sender_name(), set_sender_email_address(), 및 set_sender_address_type()을(를) 구성합니다.
  • 첨부 파일 관리: 바이트 또는 스트림에서 mapi_attachment::from_bytes()mapi_attachment::from_stream()을 사용하여 첨부 파일을 로드하고, is_embedded_message()을 통해 임베디드 메시지를 확인합니다.
  • 저장 및 다시 로드: mapi_message::save()으로 직렬화하고 mapi_message::from_file() 또는 mapi_message::from_stream()로 다시 로드합니다.

고수준 API가 사용되는 위치

  • 자동화된 이메일 생성: 배치 작업에서 데이터 레코드로부터 수천 개의 개인화된 MSG 파일을 생성합니다.
  • Test fixture creation: 통합 테스트 스위트를 위해 예측 가능한 내용의 검증된 MSG 파일을 생성합니다.
  • 첨부 파일 추출: MSG 파일을 로드하고, 첨부 파일을 반복하며, 각각을 디스크에 저장합니다.

EML 및 MIME 변환

  • Load EML into mapi_message: 표준 .eml 파일(RFC 5322 / MIME)을 전체 mapi_message 객체로 mapi_message::load_from_eml()를 통해 구문 분석합니다.
  • mapi_message를 EML로 저장: mapi_messagesave_to_eml()를 사용해 MIME 형식으로 직렬화합니다.
  • Round-trip fidelity: 제목, 본문, 발신자, 수신자 및 첨부 파일은 EML에서 MSG로, 다시 EML로 라운드 트립하는 동안 보존됩니다.

EML 변환이 사용되는 위치

  • Format bridging: 메일 서버에서 EML 형식으로 이메일을 수신하고 Outlook 호환 저장을 위해 MSG로 변환합니다.
  • 표준 준수: 독점적인 MSG 파일을 표준 MIME으로 변환하여 모든 메일 전송에 전달합니다.
  • 아카이브 정규화: 혼합된 .eml.msg 파일 아카이브를 단일 형식으로 정규화합니다.

MSG 파일에서 제목 읽기

스트림에서 Outlook MSG 파일을 열고 제목을 출력합니다 — Microsoft Outlook이 필요 없습니다.

#include <fstream>
#include <iostream>

#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    std::ifstream input("sample.msg", std::ios::binary);
    auto message = aspose::email::foss::msg::mapi_message::from_stream(input);
    std::cout << message.subject() << '\n';
}

MSG 메시지 생성 및 저장

보낸 사람, 받는 사람 및 첨부 파일이 포함된 전체 이메일을 만든 후, 이를 MSG와 EML 형식으로 모두 저장합니다.

#include <fstream>

#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    auto message = aspose::email::foss::msg::mapi_message::create("Hello", "Body");
    message.set_sender_name("Alice");
    message.set_sender_email_address("alice@example.com");
    message.add_recipient("bob@example.com", "Bob");
    message.add_attachment("note.txt", std::vector<std::uint8_t>{'a', 'b', 'c'}, "text/plain");

    std::ofstream msg_output("hello.msg", std::ios::binary);
    message.save(msg_output);

    std::ofstream eml_output("hello.eml", std::ios::binary);
    message.save_to_eml(eml_output);
}
  

지원 및 학습 자료

 한국어