문제

.NET의 Outlook .MSG 파일을 읽어야 합니다. 없이 Outlook용 COM API를 사용합니다(내 앱이 실행될 컴퓨터에는 설치되지 않기 때문입니다).이를 수행할 수 있는 무료 타사 라이브러리가 있습니까?From, To, CC, BCC 필드를 추출하고 싶습니다.전송/수신 날짜 필드가 MSG 파일에도 저장되어 있으면 좋을 것입니다.

도움이 되었습니까?

해결책 2

업데이트: 다음과 같은 타사 COM 라이브러리를 찾았습니다. Outlook 상환 지금은 나에게 잘 작동하고 있습니다..NET에서 COM-Interop을 통해 사용하는 경우 작업이 완료된 후 모든 COM 개체를 해제하는 것을 잊지 마십시오. 그렇지 않으면 응용 프로그램이 무작위로 충돌합니다.

다른 팁

COM 없이 .msg 파일을 읽는 데 사용할 수 있는 코드가 CodeProject에 있습니다.보다 여기.

다음은 다음을 사용하는 몇 가지 샘플 VBA 코드입니다. Outlook 상환 Huseyint가 발견한 것입니다.

Public Sub ProcessMail()

   Dim Sess As RDOSession
   Dim myMsg As RDOMail
   Dim myString As String

   Set Sess = CreateObject("Redemption.RDOSession")
   Set myMsg = Sess.GetMessageFromMsgFile("C:\TestHarness\kmail.msg")

   myString = myMsg.Body
   myMsg.Body = Replace(myString, "8750", "XXXX")

   myMsg.Save

End Sub

Microsoft는 다음과 같이 문서화했습니다. .MSG 파일 형식 사양

"구조화된 스토리지" 문서입니다.성공적으로 사용했습니다 앤드류 피스의 코드 과거에 .NET(C++/CLI 사용)에서도 이러한 내용을 읽으려면 깔끔하고 이해하기 쉽습니다.기본적으로 필요한 레코드가 무엇인지 파악하고 해당 레코드에 대해 쿼리해야 합니다. Outlook 버전과 메시지 유형에 따라 레코드가 다르기 때문에 약간 복잡해집니다.

우리의 (상업적)을 시도해 볼 수 있습니다 Rebex 보안 메일 도서관.Outlook의 MSG 형식을 읽을 수 있습니다.다음 코드는 방법을 보여줍니다.

// Load message
MailMessage message = new MailMessage();
message.Load(@"c:\Temp\t\message.msg");

// show From, To and Sent date
Console.WriteLine("From: {0}", message.From);
Console.WriteLine("To: {0}", message.To);
Console.WriteLine("Sent: {0}", message.Date.LocalTime);

// find and try to parse the first 'Received' header
MailDateTime receivedDate = null;
string received = message.Headers.GetRaw("Received");
if (received != null)
{
    int lastSemicolon = received.LastIndexOf(';');
    if (lastSemicolon >= 0)
    {
        string rawDate = received.Substring(lastSemicolon + 1);
        MimeHeader header = new MimeHeader("Date", rawDate);
        receivedDate = header.Value as MailDateTime;
    }
}

// display the received date if available
if (receivedDate != null)
    Console.WriteLine("Received: {0}", receivedDate.LocalTime);

보낸 날짜와 받은 날짜에 대한 자세한 내용과 메시지에 표시되는 방식은 다음에서 확인할 수 있습니다. http://forum.rebex.net/questions/816/extract-senttime-receivetime-and-time-zones

텍스트 편집기에서 .MSG 파일을 열면 원하는 정보가 파일 내에 일반 텍스트로 저장되어 있다는 것을 알게 될 것입니다.(적어도 내가 확인한 모든 메시지에 있습니다)

"From:" 또는 "To:" 등으로 시작하는 줄을 찾기 위해 파일을 구문 분석하는 코드를 작성하는 것은 매우 쉽습니다.그런 다음 필요한 정보를 추출합니다.

이메일 본문도 필요한 경우에는 좀 더 복잡할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top