2008-10-13 9 views

Répondre

6

Eh bien, c'est drôle, je suis en train d'écrire ma propre réponse.

Ce que j'ai fait était d'utiliser le code source d'entlib.

Dans Microsoft.Practices.EnterpriseLibrary.Logging et Microsoft.Practices.EnterpriseLibrary.Logging.TraceListenerData

Je trouve les classes que je avais besoin.

  • Copier EmailMessage.cs à EmailMessageHTML.cs
  • Copier EmailTraceListener.cs à EmailHTMLTraceListener.cs
  • Copie EmailTraceListenerData.cs à EmailHTMLTraceListenerData.cs

Mettez ces classes dans votre nouvelle bibliothèque Projet.

Dans EmailMessageHTML changer tous les constructeurs pour correspondre au nouveau nom de classe et que ADD ligne suivante à la méthode:

protected MailMessage CreateMailMessage() 
      { 
       ..... 

       message.IsBodyHtml = true; 
       ..... 

       return message; 
      } 

Après cela, je devais utiliser cette nouvelle classe EmailMessageHTML dans EmailHTMLTraceListener (changer EmailMessage à EmailMessageHTML) et utilisez également cet EmailHTMLTraceListener dans le nouveau fichier EmailHTMLTraceListenerData.cs.

Compile ce nouveau projet et que d'utiliser dans votre config comme suit (exemple)

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

et ajouter une catégorie valide pour vous connecter ceci bien sûr:

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

Bien sûr, vous avez besoin un document HTML à enregistrer avec EntLib. Je laisse cela comme un exercice pour le lecteur. Et en effet! Je reçois un bon email HTML maintenant pour chaque réservation d'outofbalance que les clients font sur le site ...

+1

Excellent travail Hace. Pris ton travail ci-dessus à titre d'exemple et est allé et mis en œuvre exactement cela. a écrit les étapes ici. 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/non trouvé –

Questions connexes