.net - publicidad - ¿Cómo envío correos electrónicos a los errores registrados con NLog?
smtp gmail c# (2)
Estoy utilizando 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.
A continuación está 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>
Llamo el error como tal
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
Estoy intentando que envíe el error, que contiene el mensaje y las cosas que normalmente registra a 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?
Cambie su codificación de UTF8
a UTF-8
.
Suponiendo que no haya otros errores en su configuración de SMTP (que generalmente es la causa de que los mensajes no se envíen), debería funcionar.
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 usar el servidor SMTP y el segundo para entregar el correo electrónico a su carpeta local. La segunda opción es buena para probar.