テキスト フォーマッタを使用して、Microsoft Enterprise Library 2.0 を使用してメールを送信する方法を知っています。ただし、これらのメールは常にプレーン テキストです。entlib 2.0 でこれらのメールを HTML 形式で送信する方法はありますか?
1 に答える
それはおかしいです、私は今自分の答えを書いています。
私がしたことは、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 メールを受け取るようになりました...