Как отправить электронное письмо в формате HTML с помощью Microsoft Enterprise Library? - PullRequest
7 голосов
/ 13 октября 2008

Я знаю, как отправлять почту, используя Microsoft Enterprise Library 2.0, используя форматировщик текста. Но эти электронные письма всегда в виде простого текста. Есть ли способ с Entlib 2.0 для отправки этих писем в формате HTML?

1 Ответ

7 голосов
/ 14 октября 2008

Ну, это смешно, сейчас я пишу свой собственный ответ.

Я использовал исходный код 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), а также использовать этот EmailHTMLTraceListener в новом файле EmailHTMLTraceListenerData.cs.

Скомпилируйте этот новый проект и используйте его в вашей конфигурации следующим образом (пример)

<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. Я оставляю это как упражнение для читателя. И действительно! Теперь я получаю хорошее электронное письмо по электронной почте для каждого забронированного дисбаланса, который клиенты совершают на сайте ...

...