0034. log4net 發送Email的方法,使用Gmail為範例

C#學習筆記

應用所需

1. Visual Studio 2019 - 範例專案 WindowsForm (.net Framework)

目的:

1. 使用Log4net套件,紀錄Log時發送Email 到google的gmail中

範例檔案: https://github.com/gotoa1234/Log4netSendEmailExample.git
實作必須:

1. Google Gmail 的信箱

本篇分為三部分 :

一、 Log4net的安裝
二、

使用Log4net發送Mail需完成的三個設定

三、 實際發送


一、 Log4net的安裝


 

Step 1:先建立一個專案,這邊使用的是.netframeWork 4.7.2 的WindowsForm的專案

然後於參考 -> 按下滑鼠右鍵 -> 管理NuGet套件

 

Step 2:瀏覽 -> 輸入log4net -> 點擊安裝


一、 使用Log4net發送Mail需完成的三個設定


Step 1: 對App.Config設定

1.  App.Config 點開

2. 在以下section內插入黃框的代碼

<Configuration>
</Configuration>

Step 1.2:上述代碼如下,可以直接貼上

    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
      <root>
        <level value="ALL" />
        <appender-ref ref="SmtpAppender" />
      </root>
      <!-- 寫入傳送E-Mail設定開始 -->
      <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
        <to value="capXXXX@gmail.com" />
        <from value="capXXXX@gmail.com" />
        <subject value="Send log4net E-Mail測試" />
        <smtpHost value="smtp.gmail.com" />
        <authentication value="Basic" />
        <port value="587" />
        <username value="輸入自己的發送Mail帳號" />
        <password value="輸入自己的發送Mail密碼" />
        <bufferSize value="10" />
        <EnableSsl value="true"/>
        <lossy value="true" />
        <threshold value="DEBUG" />
        <evaluator type="log4net.Core.LevelEvaluator">
          <threshold value="INFO"/>
        </evaluator>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date{dd/MM/yyyy hh:mm:ss.fff}&#9;%-5level&#9;%-15logger&#9;%message%newline" />
        </layout>
      </appender>
    </log4net>

Step 1.3:其中以下是指定要用log4net的Smtp發送

Step 1.4:重要參數說明

第1個 <to></to> 字段是發送對象的信箱
第2個<from></from> 字段是發送來源,通常是填寫發送者的信箱
第3個<username></username> 是輸入自己的帳號,如我的gmail信箱是 hello@gmail.com 那麼我的帳號就是 hello 
第4個<password></password> 是輸入自己的帳號對應的密碼
第5個<evaluator></evaluator> 是log會送Email的層級,這邊設定是Info
第6個<layout></layout> 是發送郵件的內容格式,依這個格式會類似=> 日/月/年 時:分:秒 紀錄層級 物件名稱 紀錄內容

Step 2 : 添加 Assembly  組件的設定,如下圖

1. 先開啟 AssemblyInfo.cs 的檔案

2. 增加以下代碼,使Log4net生效

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

Step 3 : Google帳號,需開啟發送郵件的應用權限,如下圖

先登入到自己要發送Mail的Google帳號,登入後

1. 左邊選擇 "安全性"

2. 拉到畫面最下面的=> 低安全性應用程式存取權

3. 點擊 => 開啟存取權  (不建議)

※因為我們要允許應用程式透過這個帳號發送Mail,所以要開啟,之後不用了可以隨時關閉

Step 3.2 : 請點擊黑框的部分,使其變成3.3畫面

Step 3.3 : 此時是已開啟的狀態


三、 實際發送


STEP 1 :  回到專案,進行Log4net的發送的測試

 1. 點擊 Form.cs 開啟代碼

 2. 輸入以下兩行代碼,如下圖

  private static readonly log4net.ILog log = log4net.LogManager.GetLogger("Log4net發送Mail測試工具");
log.Info("今天天氣不錯");

 3. 執行程式碼後即可去信箱收信 

STEP 2 :  信箱可以看到以下信件 可以看到今天天氣不錯

範例檔案下載