2008-10-13 26 views

回答

6

好吧,這很有趣,我現在正在寫我自己的答案。

我做的是使用entlib的源代碼。

在 Microsoft.Practices.EnterpriseLibrary.Logging和 Microsoft.Practices.EnterpriseLibrary.Logging.TraceListenerData

我發現我所需要的類。

  • 複製EmailMessage.cs到EmailMessageHTML.cs
  • 複製EmailTraceListener.cs到EmailHTMLTraceListener.cs
  • 複製EmailTraceListenerData.cs到EmailHTMLTraceListenerData.cs

在您自己的新圖書館將這些類項目。

在EmailMessageHTML改變所有構造函數來匹配新的類名和不是添加以下行的方法:

protected MailMessage CreateMailMessage() 
      { 
       ..... 

       message.IsBodyHtml = true; 
       ..... 

       return message; 
      } 

在那之後,我不得不使用這個新EmailMessageHTML類EmailHTMLTraceListener(改變EmailMessage到EmailMessageHTML)和也可以在新的EmailHTMLTraceListenerData.cs文件中使用此EmailHTMLTraceListener。

編譯這個新項目,比使用在你的配置如下(例子)

<loggingConfiguration 
name="Logging Application Block" 
tracingEnabled="true" 
defaultCategory="" 
logWarningsWhenNoCategoriesMatch="true"> 
    <listeners> 
     <add toAddress="[email protected]"   
     fromAddress="[email protected]" 
     subjectLineStarter="" 
     subjectLineEnder="My HTMLemailLogger" 
     smtpServer="localhost" smtpPort="25" 
     formatter="Text Formatter"       
     listenerDataType="MYLibrary.HTMLEmailLogger.EmailHTMLTraceListenerData, 
     MYLibrary.HTMLEmailLogger, Version=2.0.0.0, 
     Culture=neutral, 
     PublicKeyToken=null" 
     traceOutputOptions="None" 
     type="MYLibrary.HTMLEmailLogger.EmailHTMLTraceListener, 
     MYLibrary.HTMLEmailLogger, 
     Version=2.0.0.0, 
     Culture=neutral, 
     PublicKeyToken=null" 
     name="EmailHTML TraceListener"/> 
    </listeners> 
</loggingConfiguration> 

,並添加一個有效的類別此登錄到課程:

<add switchValue="All" name="OutOfBalanceBooking"> 
    <listeners> 
     <add name="Database Trace Listener"/> 
     <add name="EmailHTML TraceListener"/> 
    </listeners> 
</add> 

當然,你需要一些HTML文檔要比使用EntLib進行日誌記錄。我把它作爲讀者的練習。 的確如此!我現在收到一封很好的HTML電子郵件,用於客戶在網站上進行的每一次錯誤預訂...

+1

幹得好。以上面的工作爲例,並完全實現了這一點。在這裏寫下步驟。 http://trycatch.me/implementing-html-formatted-emails-in-the-enterprise-library-logging-block/ – 2013-05-23 13:30:32