使用「Gmail」藉由「SMTP Sever」寄信

一、開發環境

  • 整合開發環境:Visual Studio 2019
  • 語言:C#
  • .net framework:4.6.2

二、允許低安全性應用程式

要使用 Gmail 寄信,需啟用允許低安全性應用程式

  • 未啟用 允許低安全性應用程式 會發生底下錯誤

SMTP 伺服器需要安全連接,或用戶端未經驗證。 伺服器回應為: 5.7.0 Authentication Required. Learn more at

圖、SMTP 伺服器需要安全連接,或用戶端未經驗證

  • 啟用允許低安全性應用程式

圖、登入Gmail > 按下 管理你的 Google 帳戶 > 進入 Google Console 頁面

圖、按下 安全性 > 按下 開請存取權(不建議)

圖、啟用 允許低安全性應用程式


三、寄信範例

原始碼 c#

try
{
    //smtp.gmail.com 為 Google 的SMTP Server,587 Port
    using (var smtp = new SmtpClient("smtp.gmail.com", 587))
    using (var mail = new MailMessage())
    {
        mail.From = new MailAddress("你的Gmail");
        mail.To.Add("寄到哪個Gmail");
        mail.Subject = "主旨";
        mail.Body = "信件內容";
        //啟用 Html
        mail.IsBodyHtml = true;
        
        smtp.Credentials = new NetworkCredential("你的Gmail", "你的Gmail密碼");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }

    return "Ok";
}
catch (Exception e) 
{
    return "false";
}

圖、執行後結果

四、Web.config Smtp 設定

為了簡化原始碼的撰寫,可以考慮將SMTP設定移至Web.config

  • Web.config
<configuration>
   ...
    <system.net>
        <mailSettings>
            <smtp deliveryMethod="Network" from="你的Gmail">
            <network defaultCredentials="false"
                enableSsl="true"
                host="smtp.gmail.com"
                port="587"
                userName="你的Gmail" 
                password="你的Gmail密碼" />
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
  • 原始碼 c#
try
{
    using (var smtp = new SmtpClient())
    using (var mail = new MailMessage())
    {
        mail.From = new MailAddress("你的Gmail");
        mail.To.Add("寄到哪個Gmail");
        mail.Subject = "Test Subject";
        mail.Body = "<p>Test Body</p>";
        mail.IsBodyHtml = true;
        smtp.Send(mail);
    }

    return "Ok";
}
catch (Exception e)
{
    return "false";
}

圖、執行後結果

五、相關連結

  1. 使用「IMAP」讀取「Gmail」信件的主旨

六、參考

  1. Gmail 說明
  2. 網路設定結構描述 mailSettings

留言

這個網誌中的熱門文章

「Katalon Recorder」簡化測試腳本撰寫的工具

使用「LINE Messaging API」發送 line 訊息

使用「Visual Studio 2019」建置 Windows 服務

使用「NLog」來記錄應用程式的大小事吧

如何傳送訊息至「Teams」的 Channel

「綠界(Ecpay)」金流介接教學

在「Visual Studio 2019 」使用 「NuGet」 安裝第三方套件

使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作

使用「IIS Crypto」管理「Windows Server」https 協定