7

テキスト フォーマッタを使用して、Microsoft Enterprise Library 2.0 を使用してメールを送信する方法を知っています。ただし、これらのメールは常にプレーン テキストです。entlib 2.0 でこれらのメールを HTML 形式で送信する方法はありますか?

4

1 に答える 1

7

それはおかしいです、私は今自分の答えを書いています。

私がしたことは、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="your@emailgoes.here"          
         fromAddress="yourserveraddress@goes.here" 
         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>

もちろん、EntLib でログを記録するには、HTML ドキュメントが必要です。それは読者の練習問題として残しておきます。本当に!顧客がサイトで行った残高不足の予約ごとに、素敵な HTML メールを受け取るようになりました...

于 2008-10-14T15:02:59.830 に答える