使用 C# 讀取 Outlook 郵件,可以實現許多自動化流程,例如自動下載附件或整理信件。本篇將帶你完成 Outlook 郵件讀取教學,並實作 Email 自動化流程,讓你減少重複性工作,提高工作效率。
這天上班老闆說他的公司Outlook Mail每天都會收到海關寄來的信,附件都會有重要的檔案在裡面,但是他根本沒有時間一封一封點開,能不能透過程式去把所有信件的附件都自動存在資料夾裡面?
專案開發
語言:asp.net c#
應用程式: windows forms
1 . 建立專案
- 打開Visual Studio 2022 建立一個asp.net c# windows forms專案,選Windows Forms App(.NET Framework),下一步後按建立。(圖一)
(圖一)

- 拉一個button在畫面上提供程式的進入點。(圖二)
(圖二)

- 對(圖二)button1點左鍵兩下,進入程式執行的區塊。(圖三)

2 . 詢問ChatGPT
- 語言、框架、功能需求清楚的表達給GPT如下:
asp.net c# windows form app(.Net FrameWork)讀取Outlook mail下載所有附件。
- 取得GPT給的範例,並把範例程式碼放到我們button1按下後會執行程式的區塊內,private void button1_Click(object sender, EventArgs e)的大括號{}裡面。
(請先用我查到的範例,後續有一定的基礎後可以自己使用GPT查出的範例,以免初學階段看不懂GPT的範例導致學習成效不彰)
private void button1_Click(object sender, EventArgs e)
{
try
{
string savePath = @"C:\MailAttachments\";
if (!Directory.Exists(savePath))
Directory.CreateDirectory(savePath);
Outlook.Application outlookApp = new Outlook.Application();
Outlook.NameSpace outlookNs = outlookApp.GetNamespace("MAPI");
outlookNs.Logon("", "", true, true);
Outlook.MAPIFolder inbox = outlookNs.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
foreach (Outlook.MailItem mail in inbox.Items)
{
if (mail.Attachments.Count > 0)
{
foreach (Outlook.Attachment att in mail.Attachments)
{
string fileName = Path.Combine(savePath, att.FileName);
att.SaveAsFile(fileName);
Console.WriteLine("Downloaded: " + fileName);
}
}
}
MessageBox.Show("附件下載完成!");
}
catch (Exception ex)
{
MessageBox.Show("錯誤:" + ex.Message);
}
}
- Outlook元件參考使用
當程式碼放到程式裡面你會發現Outlook 底下反紅,這是因為我們沒有參考Outllook這個內建的套件,所以編譯器就會顯示錯誤告訴你它不知道這是什麼。(圖一)
(圖一)

Outllook元件本身.net就有內建我們只需要去參考,不需要透過Nuget下載。
找到右方方案總管 → 對著參考按下右鍵 → 彈跳出來的選加入參考。(圖二)
(圖二)

在搜尋框打上 outlook → 選最新版本 Microsoft.Office.Interop.Outlook→ 確定(圖三)
(圖三)

把參考點左鍵展開會看到Microsoft.Office.Interop.Outlook,在我們程式碼最上方引用這個套件 using Outlook = Microsoft.Office.Interop.Outlook; 。
就會看到錯誤全部消失。(圖四)
(圖四)

3 . 測試效果
直接開始程式並且按下button 1。(圖一)
(圖一)

程式跑完後會彈出一個彈跳視窗顯示附件下載完成!(圖二)
(圖二)

在C槽你可以找到一個程式建立出來的MailAttachments資料夾。(圖三)
(圖三)

MailAttachments裡面就會有你信箱裡面所有信件的附件檔案。(圖四)
(圖四)

結論
到目前為止我們已經會用程式讀取Outlook mail 並且取出信件內的附件檔案,又學會了一項IT工程師的技能,可以再幫自己的成就感 + 1。下一篇我們會來研究範例程式碼的細節。















