2008-10-13 18 views

Respuesta

6

Bueno, eso es divertido, ahora estoy escribiendo mi propia respuesta.

Lo que hice fue utilizar el código fuente de entlib.

Dentro Microsoft.Practices.EnterpriseLibrary.Logging y Microsoft.Practices.EnterpriseLibrary.Logging.TraceListenerData

me encontré con las clases que necesitaba.

  • Copiar EmailMessage.cs a EmailMessageHTML.cs
  • Copiar EmailTraceListener.cs a EmailHTMLTraceListener.cs
  • EmailTraceListenerData.cs Copiar a EmailHTMLTraceListenerData.cs

poner estas clases en su propia nueva Biblioteca Proyecto.

Dentro EmailMessageHTML cambiar todos los constructores para que coincida con el nuevo nombre de clase y de ADD siguiente línea al método:

protected MailMessage CreateMailMessage() 
      { 
       ..... 

       message.IsBodyHtml = true; 
       ..... 

       return message; 
      } 

Después de eso, tuve que utilizar esta nueva clase EmailMessageHTML en EmailHTMLTraceListener (cambiar EmailMessage a EmailMessageHTML) y también use este EmailHTMLTraceListener en el nuevo archivo EmailHTMLTraceListenerData.cs.

compilar este nuevo proyecto y de utilizar esto en su configuración de la siguiente manera (ejemplo)

<loggingConfiguration 
name="Logging Application Block" 
tracingEnabled="true" 
defaultCategory="" 
logWarningsWhenNoCategoriesMatch="true"> 
    <listeners> 
     <add toAddress="[email protected]"   
     fromAddress="[email protected]" 
     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> 

y añadir una categoría válida para registrar esto, por supuesto:

<add switchValue="All" name="OutOfBalanceBooking"> 
    <listeners> 
     <add name="Database Trace Listener"/> 
     <add name="EmailHTML TraceListener"/> 
    </listeners> 
</add> 

Por supuesto que necesita algún documento HTML para luego registrar con EntLib. Lo dejo como un ejercicio para el lector. ¡Y de hecho! Ahora recibo un buen correo electrónico en HTML por cada reserva de desequilibrio que hacen los clientes en el sitio ...

+1

Gran trabajo Hace. Tomó su trabajo anterior como un ejemplo e implementó exactamente eso. escribió los pasos aquí. http://trycatch.me/implementing-html-formatted-emails-in-the-enterprise-library-logging-block/ –

+0

@EoinCampbell http://trycatch.me/implementing-html-formatted-emails-in-the -enterprise-library-logging-block/not found –

Cuestiones relacionadas