在使用 C# 發送 Email 時,最常見的需求之一就是透過 Gmail SMTP 寄信。不過許多開發者在設定 Gmail SMTP 時,常會遇到驗證失敗、無法連線或帳號被拒絕等問題。本篇將帶你完整了解如何使用 C# 搭配 Gmail SMTP 發送 Email,包含 Gmail SMTP 設定、.NET 寄信流程,以及實際可用的程式範例,幫助你快速建立穩定的寄信機制。
本篇重點:
- ✔ C# Gmail SMTP 寄信完整教學
- ✔ Gmail SMTP 設定(主機、Port、SSL)
- ✔ 使用應用程式密碼發送 Email
目前我們已經有office365寄信的版本,再來我們調整成gmail寄信的版本,讓大家用家裡的電腦也可以輕鬆練習。
開始程式碼邏輯調整
1 . 開啟C# SMTP 發送 Email 教學|程式寄信完整實作(含範例)|C# 自動化系列 的程式

2 . 依據需求調整範例程式碼
我們原本程式碼裡面有一個smtp.office365.com這樣的設定,這就是在告訴SMTP元件我們寄信是要用office365去寄送,現在我們要改用gmail去寄送其實也非常簡單,這裡我會教一個最簡單的方法。
- 把整個button1_Click裡面的程式丟到GPT裡面,並且清楚表達如下:
修改為用gmail發送信件。
- 取得GPT給的gmail版本。
有新增或修改的程式碼後面我會加//新增 或 //修改 或 //一些細節備註,讓你更清楚我們有調整的地方。其他地方就跟原本範例版一樣沒有修改。
private void button1_Click(object sender, EventArgs e)
{
string folderPath = @"C:\BackUp";
using (MailMessage mail = new MailMessage())
using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)) //修改
{
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(
"[email protected]",// 改成你的 Gmail
"xxxx xxxx xxxx xxxx" // 16碼應用程式密碼
);//修改
mail.From = new MailAddress("[email protected]");// 改成你的 Gmail
mail.To.Add("[email protected]");
mail.Subject = "測試寄送附件(Gmail)";
mail.Body = "這是從資料夾自動加入附件的測試郵件(Gmail 發送)";
if (Directory.Exists(folderPath))
{
string[] files = Directory.GetFiles(folderPath);
foreach (string file in files)
{
mail.Attachments.Add(new Attachment(file));
}
}
else
{
MessageBox.Show("資料夾不存在");
return;
}
try
{
smtp.Send(mail);
MessageBox.Show("寄信成功");
}
catch (Exception ex)
{
MessageBox.Show("寄信失敗:" + ex.Message);
}
}
}
- 取得gmail發送的密碼
要用gmail去發送信件,需要取得應用程式密碼,ChatGPT會告訴我們使用以下網址去取得自己帳號的應用程式密碼。
https://myaccount.google.com/apppasswords
點網址後會進入如下畫面。
在應用程式名稱打上自己喜歡的名稱 → 點建立。(圖一)
(圖一)

彈出系統產生的應用程式密碼,記得複製下來。(圖二)
(圖二)

3 . 新增或更改的程式碼:
修改程式碼:
- using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)) //修改
-------------------------------------------------------------------------------------------------------
第 1 行 原本我們是用smtp.office365.com調整成smtp.gmail.com。
修改程式碼:
- smtp.Credentials = new NetworkCredential(
"[email protected]",// 改成你的 Gmail
"xxxx xxxx xxxx xxxx" // 16碼應用程式密碼
);//修改
-------------------------------------------------------------------------------------------------------
第 1 行 mail改成你的gmail帳號[email protected],而且是要用取得應用程式密碼的那個帳號。
從應用程式密碼取得的16碼直接複製貼過來xxxx xxxx xxxx xxxx 這裡。
修改程式碼:
- mail.From = new MailAddress("[email protected]");// 改成你的 Gmail
- mail.To.Add("[email protected]");
-------------------------------------------------------------------------------------------------------
第 1 行 [email protected]要改成你的gmail帳號,而且是要用取得應用程式密碼的那個帳號。
第 2 行 就看你要寄給哪個帳號都可以,只要收得到信就好。
4 . 測試結果
- 直接開始程式並且按下button 1,就會發現gmail有收到信件!(圖一)
(圖一)

結論
這個練習是我個人最喜歡的練習,因為結合了實際運用,程式執行後的結果可以實際在信箱看到,而且還結合了gmail,這會讓人大大提升成就感。 你會開始發現程式相當有趣,可以跟很多不同的系統或是應用程式串接,尤其是基礎越來越扎實,就能跟更多的人合作,或是串接facebook、LINE等等的應用程式。 所以我一開始才會建議用簡單的windowsform做學習,之後越來越了解程式後,要學習不同語言都可以,不用擔心學了windowsform就只能做公司內部的程式喔!
這次的練習還有一個我覺得很能凸顯學程式的作品跟經驗是可以累積複製的,例如我們範本是office365,我們架構不用調整什麼只要調整寄信的設定以及帳號密碼,就能變成透過gmail寄信,這就是程式最棒的地方。當我們把一個架構做出來後,只要微調就能讓很多不同的情境使用同一個程式就可以,我們就可以一直累積作品,下次遇到就把前面的作品拿出來用,開發速度就會越快,你就會越來越有自信,而且會覺得自己每天都在進步,都在累積自身的實力,就會更不擔心環境的變化了,因為你已經隨時準備好面對變化很大的職場了!


















