MSG 파일 로드 및 파싱

Aspose.Email for .NET을 사용하면 개발자는 Outlook 메시지 파일의 내용을 로드하고 파싱할 수 있습니다.

  • 디스크에서 MSG 파일을 로드하려면 정적 메서드를 사용하세요 MapiMessage.Load 메서드 MapiMessage 클래스. 이 클래스는 다양한 시나리오에 대한 여러 정적 로딩 기능을 제공합니다.
  • MSG 파일 내용을 구문 분석하려면 MapiMessage 다수의 메서드와 속성을 노출합니다.

이 문서에서는 MSG 파일을 로드하고 파싱하여 내용을 표시하는 방법을 배웁니다. 단계별 코드 샘플을 통해 프로젝트에서 Outlook MSG 파일을 로드하고 파싱하는 기능을 구현하는 방법을 명확히 이해할 수 있습니다.

먼저 파일 또는 스트림에서 MSG 파일을 로드하는 방법을 배우세요.

MSG 파일 로드

다음 코드 스니펫은 MSG 파일을 로드하는 방법을 보여줍니다.

// Create an instance of MapiMessage from file
var msg = MapiMessage.Load(@"message.msg");

// Get subject
Console.WriteLine("Subject:" + msg.Subject);

// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);

// Get body
Console.WriteLine("Body" + msg.Body);

// Get recipients information
Console.WriteLine("Recipient: " + msg.Recipients);

// Get attachments
foreach (var att in msg.Attachments)
{
    Console.Write("Attachment Name: " + att.FileName);
    Console.Write("Attachment Display Name: " + att.DisplayName);
}

다음 코드 예제는 MailMessage를 사용하여 MSG 형식의 메시지를 로드하는 방법을 보여줍니다.


var eml = MailMessage.Load("message.msg");

결과 메시지는 임베디드 메시지 첨부 파일을 포함하여 EML 형식으로 변환됩니다. 원본 메시지의 특정 msg 형식 속성을 보존하려면 이 로드 방법을 사용하지 마십시오.

임베디드 메시지 첨부 파일의 원본 형식을 보존하려면 다음을 사용하십시오 msgLoadOptions.PreserveEmbeddedMessageFormat 속성.


var msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.PreserveEmbeddedMessageFormat = true;
var msg = MailMessage.Load(stream, msgLoadOptions);

스트림에서 로드

다음 코드 스니펫은 스트림에서 파일을 로드하는 방법을 보여줍니다.

// Create an instance of MapiMessage from file
byte[] bytes = File.ReadAllBytes(@"message.msg");

using (MemoryStream stream = new MemoryStream(bytes))
{
    stream.Seek(0, SeekOrigin.Begin);
    // Create an instance of MapiMessage from file
    MapiMessage msg = MapiMessage.Load(stream);

    // Get subject
    Console.WriteLine("Subject:" + msg.Subject);

    // Get from address
    Console.WriteLine("From:" + msg.SenderEmailAddress);

    // Get body
    Console.WriteLine("Body" + msg.Body);

}

EML을 MSG로 변환하면서 임베디드 EML 형식 유지

EML 파일을 로드할 수 있습니다 MapiMessage 클래스를 인스턴스화하여 MailMessage 객체를 생성하고 이를 MapiMessage.FromMailMessage 메서드. EML 파일에 임베디드 EML 파일이 포함된 경우, 사용하십시오 MapiConversionOptions.PreserveEmbeddedMessageFormat 임베디드 EML 파일의 형식을 유지합니다. 아래 코드 스니펫은 EML 파일을 로드하는 방법을 보여줍니다. MapiMessage 임베디드 EML 파일의 형식을 보존하면서.

// Load the EML file into a MailMessage object
var mailMessage = MailMessage.Load(emlFilePath);

// Set conversion options to preserve the format of embedded EML messages
var options = new MapiConversionOptions
    {
        PreserveEmbeddedMessageFormat = true
    };

// Convert MailMessage to MapiMessage, preserving embedded EML files
var mapiMessage = MapiMessage.FromMailMessage(mailMessage, options);

// Save the converted message in MSG format
mapiMessage.Save(msgFilePath);

Outlook 메시지 파일 파싱

Aspose.Email for .NET은 다음을 제공합니다 MapiMessage MSG 파일을 열고 구문 분석하는 데 사용되는 클래스입니다. MSG 파일에 수신자가 다수 있을 수 있으므로 MapiMessage 클래스는 다음을 노출합니다 수신자 값을 반환하는 속성 MapiRecipientCollection 컬렉션을 나타내는 MapiRecipient 객체. MapiRecipient 객체는 수신자 속성을 처리하기 위한 추가 메서드를 제공합니다.

다음 단계 순서가 이 목적을 수행합니다:

  1. 다음의 인스턴스를 생성합니다. MapiMessage 클래스 사용 MapiMessage.Load 정적 메서드.
  2. MSG 파일에서 발신자 이름, 제목 및 본문을 표시하려면 다음을 사용합니다 보낸 사람 이름, Subject 및 본문 속성.
  3. 다음 사용 수신자 컬렉션에 대한 참조를 가져오는 속성 MapiRecipient MSG 파일과 연관된 객체들.
  4. 반복합니다 MapiRecipientCollection 각 항목의 내용을 표시하기 위한 컬렉션 MapiRecipient 객체를 공개 메서드를 통해 사용합니다.
//Instantiate an MSG file to load an MSG file from disk
var outlookMessageFile = MapiMessage.Load(dataDir + "message.msg");
//Display sender's name
Console.WriteLine("Sender Name : " + outlookMessageFile.SenderName);
//Display Subject
Console.WriteLine("Subject : " + outlookMessageFile.Subject);
//Display Body
Console.WriteLine("Body : " + outlookMessageFile.Body);
//Display Recipient's info
Console.WriteLine("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
foreach (var rcp in outlookMessageFile.Recipients)
{
	//Display recipient email address
	Console.WriteLine("Email : " + rcp.EmailAddress);
	//Display recipient name
	Console.WriteLine("Name : " + rcp.DisplayName);
	//Display recipient type
	Console.WriteLine("Recipient Type : " + rcp.RecipientType);
}