2012-01-07 15 views
29

Estoy usando NLog por primera vez, descubrí cómo escribir en un archivo de texto, pero ahora quiero enviarme un correo electrónico. Estoy asumiendo que cuando proporciona credenciales SMTP a NLog. El ensamblado llama al espacio de nombres System.Net.Mail y se encarga de enviar un correo electrónico. Si esto es incorrecto, por favor dígame. Y si ha hecho esto antes, agradecería cualquier información sobre lo que le llevó a lograr enviar correos electrónicos.¿Cómo envío errores por correo electrónico con NLog?

A continuación se muestra mi configuración.

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

que llamo el error como así

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 

que estoy tratando de conseguir que se envía el error, que contiene el mensaje, y las cosas que normalmente se registra en un archivo, a mi correo electrónico. Sé cómo detectar excepciones y enviarlas por correo electrónico a mí mismo, pero pensé que NLog tenía la capacidad para hacerlo. Cualquier tutorial con ejemplos simples muertos de usar la funcionalidad de correo electrónico funcionaría. Encontré muchas cosas pero no puedo hacer que funcione. Si lo has hecho, un ejemplo de código o explicación de qué más necesito hacer me ayudaría. No puedo entender qué es lo que estoy haciendo mal. ¿Alguien tiene alguna idea?

Respuesta

19

Cambia la codificación de UTF8 a UTF-8.

Suponiendo que no haya otros errores en la configuración de SMTP (que generalmente es la causa de los mensajes que no se envían), debería funcionar.

+0

Eso fue todo, se suponía que UTF8 sería UTF-8. El ejemplo que encontré tuvo un error. Gracias. –

2

Creo que necesita configurar mailSettings en system.net. Algo como esto:

<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 primera opción es para usar el servidor SMTP y la segunda para entregar el correo electrónico a su carpeta local. La segunda opción es buena para probar.

+0

¿Debo crear el correo electrónico y guardarlo? ¿Por qué no solo escribo una clase de registro y escribo otra clase para enviar correos electrónicos? Ya no he hecho eso antes. Sin ánimo de ofender, esto solo fue recomendado, así que pensé que los errores de correo electrónico o cualquier registro serían completamente simples. –

+0

Tengo curiosidad por saber qué utilizas para el registro, mucha gente que veo usa log4 net y elmah. –

+0

Elmah para el manejo de excepciones generales y log4net para manejar el registro de detalles cuando se depura. –

Cuestiones relacionadas