在實務開發中,使用 C# 發送 Email 是非常常見的需求,例如通知系統、寄送報表或自動提醒。本篇將帶你完整學會如何透過 SMTP 寄信,使用 .NET 實作 Email 發送功能,從基本設定到實際程式碼範例,一步一步建立可用的寄信流程。無論你是新手還是正在開發自動化工具,都可以透過這篇教學快速掌握 C# SMTP 發送 Email 的核心技巧。
本篇重點:
- ✔ 使用 C# 透過 SMTP 發送 Email
- ✔ .NET 寄信設定與基本流程
- ✔ 完整程式碼範例(可直接套用)
今天採購部門的同事跑來求助,當他們採購完商品後,會有採購的項目清單,每次他們都要自己手動把清單寄給相關人員建立採購單號,有沒有機會請資訊部幫忙,他們只要把檔案放在資料夾內,透過我們的程式按下後就能自動寄信給相關人員,不用再自己開啟信箱選檔案跟收件人。
需求如圖一,資料夾內的檔案自動放到附件,透過程式自動寄信,不用操作信箱。
(圖一)

專案開發
語言: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) 將資料夾裡面的檔案加到附件並透過SMTP寄信。
- 取得GPT給的範例,並把範例程式碼放到我們button1按下後會執行程式的區塊內,private void button1_Click(object sender, EventArgs e)的大括號{}裡面。
(請先用我查到的範例,後續有一定的基礎後可以自己使用GPT查出的範例,以免初學階段看不懂GPT的範例導致學習成效不彰)
private void button1_Click(object sender, EventArgs e)
{
string folderPath = @"C:\BackUp";
using (MailMessage mail = new MailMessage())
using (SmtpClient smtp = new SmtpClient("smtp.office365.com", 587))
{
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("你的寄信帳號@xxx.com", "寄信帳號的密碼");
mail.From = new MailAddress("你的寄信帳號@xxx.com");
mail.To.Add("你的收件帳號@xxx.com");
mail.Subject = "測試寄送附件";
mail.Body = "這是從資料夾自動加入附件的測試郵件";
if (Directory.Exists(folderPath))
{
string[] files = Directory.GetFiles(folderPath);
foreach (string file in files)
{
Attachment attachment = new Attachment(file);
mail.Attachments.Add(attachment);
}
}
else
{
MessageBox.Show("資料夾不存在");
return;
}
try
{
smtp.Send(mail);
MessageBox.Show("寄信成功");
}
catch (Exception ex)
{
MessageBox.Show("寄信失敗:" + ex.Message);
}
}
}
3 . 測試效果
- 開始前要確定你有可以寄信的帳號、密碼、收信的帳號。(我是用公司Office365)
- 還要確認在 "C:\BackUp" 資料夾內放個word、Excel或記事本等等的檔案。(圖一)
(圖一)

- 直接開始程式並且按下button 1,就會跳出寄信成功!(圖二)
(圖二)

- 程式跑完後,就會在信箱看到透過程式寄出來的信件,並且有附上檔案。(圖三)
(圖三)

結論
這篇的程式碼範例我們用Office365的信箱發信,主要是因為大型公司基本上都是用Office365,不過如果目前沒有Office365帳號沒關係,下一篇 7-1 我們研究完範例程式碼的細節後,我會順便教你怎麼改成用gmail的信箱發信,這樣就可以透過gmail來達到一樣的練習效果喔!















