• Daum블로그로 구독
  • HanRSS
  • Google
  • RSS
  • Bloglines

IT2012. 2. 20. 23:30

C# 아웃룩(Outlook) 메일 MSG(.msg) 화일로 저장하기


C#, .NET, 아웃룩, msg, 저장, 이메일, email, C sharp, 프로그래밍,  Outlook, Save, Microsoft

C#을 이용하여 Outlook에 저장된 메일을 ".msg" 형태로 로컬 컴퓨터의 하드디스크로 저장하는 방법을 소개합니다. 본 소스에서 사용한 Outlook 메일박스는 "받은편지함"의 받은 편지를 대상으로 소개합니다. 

참고로 아웃룩 익스프레스(Outlook Express)가 아니라 MS Office 제품군에 있는 "Microsoft Office Outlook" 이오니 혼동하지 않기를 바랍니다.

아래 코드를 테스트 하기위해서는 C# 폼에 "TextBox"와 "Button" 을 배치해 놓고 테스트 해 보시기 바랍니다.
 
프로그램 코딩 환경은 아래와 같습니다.
* O/S : MicroSoft XP Pro
* MS Office 버젼 : 2007
* 개발 툴 : VisualStudio 2008

우선 "Microsoft Outlook 12.0 Object Library" Component를 레퍼런스에 추가합니다.
( "Microsoft Outlook Object Library 버전은 자신의 컴퓨터에 설치된 Outlook 버전에 따라 다를 수가 있으니 맞게 선택하시면 됩니다. )


1. "Microsoft Outlook 12.0 Object Library" 추가하기
  1. 1) 메뉴에서 [Project]->[Add Reference] 클릭
    2) COM 탭으로 이동후
    3) Microsoft Outlook 12.0 Object Library 찾아서 선택후 "OK"


2. 네이스페이스에 아래를 추가합니다.
  1. using Outlook = Microsoft.Office.Interop.Outlook;

3. 폼에 "Button"과 "TextBox"를 배치합니다. Button 클릭시 Text Box에 받은 편지함의 내용을 표시합니다.


4. C# Outlook 메일 MSG 화일로 저장하기 소스 코드
        Outlook.Application app = null;
        Outlook._NameSpace ns = null;
        Outlook.MAPIFolder inboxFolder = null;

        private void button1_Click(object sender, EventArgs e)
        {
            app = new Outlook.Application();
            ns = app.GetNamespace("MAPI");
            ns.Logon(null, null, false, false);

            inboxFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
            textBox1.Text = string.Format("Folder Name: {0}\r\n, EntryId: {1}", inboxFolder.Name.ToString(),
                                       inboxFolder.EntryID.ToString()) + "\r\n";
            
            for (int i = 1; i <= inboxFolder.Items.Count; i++)
            {
               
                Outlook.MailItem mailitem = (Microsoft.Office.Interop.Outlook.MailItem)inboxFolder.Items[i];

                textBox1.Text += string.Format("Item: {0}", i.ToString()) + "\r\n";

                textBox1.Text += string.Format("Subject: {0}", mailitem.Subject) + "\r\n";
                textBox1.Text += string.Format("Sent: {0} {1}", mailitem.SentOn.ToLongDateString(), 
                                               mailitem.SentOn.ToLongDateString()) + "\r\n";
                textBox1.Text += string.Format("Categories: {0}", mailitem.Categories) + "\r\n";
                textBox1.Text += string.Format("Body: {0}", mailitem.Body) + "\r\n";
                textBox1.Text += string.Format("HTMLBody: {0}", mailitem.HTMLBody) + "\r\n";

                mailitem.SaveAs(@"e:\savemsg\test" + i + ".msg", Outlook.OlSaveAsType.olMSG);
              }
        }
위 코드를 실행하면 아래와 같은 화면이 로딩 됩니다. 버튼을 클릭하면 Outlook의 받은 편지함 내용을 텍스트 박스에 표시합니다.

실행시 결과 화면


그리고 소스 코드에서 설정한 폴더로 이동하면 받은 편지함의 메일이 msg로 저장된 것을 확인 할 수 있습니다.

저장된 MSG 화일


C# 아웃룩(Outlook) 메일 MSG(.msg) 화일로 저장하기
http://all4cs.tistory.com - 두그미의 사는 이야기


Posted by 4Cs