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;
            }

之后,我不得不在 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 电子邮件……

于 2008-10-14T15:02:59.830 回答