我知道如何使用文本格式化程序使用Microsoft Enterprise Library 2.0发送邮件。但这些电子邮件始终是纯文本。有没有办法使用entlib 2.0以HTML格式发送这些邮件?
答案 0 :(得分:7)
这很有趣,我现在正在写自己的答案。
我所做的是使用entlib的源代码。
在 Microsoft.Practices.EnterpriseLibrary.Logging和 Microsoft.Practices.EnterpriseLibrary.Logging.TraceListenerData
我找到了我需要的课程。
将这些课程放在您自己的新图书馆计划中。
在EmailMessageHTML中,更改所有构造函数以匹配新的类名,而不是ADD跟随方法的行:
protected MailMessage CreateMailMessage()
{
.....
message.IsBodyHtml = true;
.....
return message;
}
之后,我不得不在EmailHTMLTraceListener中使用这个新的EmailMessageHTML类(将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>
当然,您需要一些HTML文档,而不是使用EntLib进行日志记录。我把它作为读者的练习。 的确!我现在收到一封很好的HTML电子邮件,用于客户在网站上进行的每次超额预订...