使用「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

留言

這個網誌中的熱門文章

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

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

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

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

如何取得 FaceBook 的「應用程式編號」、「應用程式密鑰」。

使用「Line-Notify」發送 line 訊息

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

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

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

開源的前端打包工具「Webpack」