2012-01-07 4 views
29

Sto usando NLog per la prima volta, ho capito come scrivere su un file di testo, ma ora voglio mandare una mail a me stesso. sto assumendo il presupposto che quando si forniscono credenziali SMTP a NLog. L'assembly chiama lo spazio dei nomi System.Net.Mail e gestisce l'invio di un'e-mail. Se questo è sbagliato, per favore dimmelo. E se lo hai fatto prima, apprezzerei qualsiasi informazione su ciò che ti ha portato a realizzare email di invio.Come si inviano gli errori di posta elettronica registrati con NLog?

Di seguito è la mia configurazione.

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
    <targets> 
    <!--<target name="logfile" xsi:type="File" fileName="C:\Users\keithb\Desktop\TestLog.txt" />--> 
    <target name="Mail" xsi:type="Mail" html="true" subject="Error Received" body="${message}"   
     to="[email protected]" 
     from="[email protected]" 
     Encoding="UTF8" 
     smtpUsername="[email protected]" 
     enableSsl="False" 
     smtpPassword="pa$$word" 
     smtpAuthentication="Basic" 
     smtpServer="mail.someemail.com" 
     smtpPort="25" /> 
    </targets> 
    <rules> 
    <!--<logger name="*" minlevel="Debug" writeTo="logfile" />--> 
    <logger name="*" level="Error" writeTo="Mail" /> 
    <logger name="*" level="Fatal" writeTo="Mail" /> 
    </rules> 
</nlog> 

io chiamo l'errore in questo modo

Imports NLog 

Public Class HandleGetRouteInfo 
    Private Shared logger As Logger = LogManager.GetCurrentClassLogger() 

    Public Shared Function GetRouteInfo(ByVal routeInfo As RequestGetRouteInfo) As GetRouteInfoResponse 
     'TODO: Check route ID, username, password 
     logger.Fatal("User" & routeInfo.UserName & "has entered the GetRouteInfo Method.") 
     logger.Error("User" & routeInfo.UserName & "has entered the GetRouteInfo Method.") 
     Dim str As String = logger.Name 
End Function 
End Class 

Sto cercando di farlo per inviare l'errore, che contiene un messaggio, e le cose che si registra normalmente in un file, alla mia e-mail. So come catturare le eccezioni e inviarlo via email a me stesso, ma ho pensato che NLog avesse le capacità per farlo. Funzionerebbero con semplici esempi di utilizzo della funzionalità di posta elettronica. Ho trovato un sacco di cose ma non riesco a farlo funzionare. Se hai fatto questo, qualche esempio di codice o spiegazione di cos'altro ho bisogno di fare sarebbe di aiuto. Non riesco a capire cosa sto sbagliando. Qualcuno ha qualche idea?

risposta

19

Modificare la codifica da UTF8 a UTF-8.

Supponendo che non ci siano altri errori nelle impostazioni SMTP (che di solito è la causa dei messaggi non inviati), dovrebbe funzionare.

+0

Era così, UTF8 doveva essere UTF-8. L'esempio che ho trovato ha avuto un errore. Grazie. –

2

Penso che sia necessario configurare le mailSettings nel sistema.net. Qualcosa del genere:

<system.net> 
    <mailSettings> 

    <smtp from="[email protected]"> 
     <network host="server.net" userName="[email protected]" password="somepassword"/> 
    </smtp> 

    <!--Just and example of for testing. Cant have both--> 
    <smtp deliveryMethod="SpecifiedPickupDirectory" from="[email protected]"> 
     <network host="localhost"/> 
     <specifiedPickupDirectory pickupDirectoryLocation="d:\tmp\email"/> 
    </smtp> 

    </mailSettings> 
</system.net> 

La prima opzione è per l'utilizzo del server SMTP e la seconda per recapitare la posta nella cartella locale. La seconda opzione è buona per i test.

+0

Quindi ho bisogno di creare l'e-mail e salvarlo? Perché non dovrei semplicemente scrivere una classe di registrazione e scrivere un'altra classe per inviare e-mail. Non l'ho già fatto prima. Senza offesa questo è stato appena consigliato quindi ho pensato di errori di posta elettronica o qualsiasi registrazione sarebbe morto semplice. –

+0

Sono curioso di cosa usi per la registrazione, molte persone che vedo usano log4 net ed elmah. –

+0

Elmah per la gestione generale delle eccezioni e log4net per la gestione della registrazione dettagliata durante il debug. –

Problemi correlati