Подтвердить что ты не робот

Как я могу исправить ошибки электронной почты с помощью NLog?

Я использую NLog в первый раз, я понял, как писать в текстовый файл, но теперь я хочу отправить электронное письмо себе. сделав предположение, что при отправке учетных данных SMTP в NLog. Ассемблер вызывает пространство имен System.Net.Mail и обрабатывает отправку электронной почты. Если это неправильно, скажите мне. И если вы сделали это раньше, я был бы признателен за любую информацию о том, что вам потребовалось, чтобы отправить электронную почту.

Ниже приведена моя конфигурация.

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

Я вызываю ошибку так:

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

Я пытаюсь заставить его отправить сообщение об ошибке, содержащее сообщение и все, что он обычно регистрирует в файл, на мой адрес электронной почты. Я знаю, как перехватывать исключения и отправлять их по электронной почте себе, но я подумал, что у NLog есть возможности для этого. Любые учебники с мертвыми простыми примерами использования функций электронной почты будут работать. Я нашел много вещей, но не могу заставить его работать. Если вы это сделали, вам поможет образец кода или объяснение того, что мне нужно сделать. Я не могу понять, что это такое, я делаю неправильно. У кого-нибудь есть идеи?

4b9b3361

Ответ 1

Измените свою кодировку с UTF8 на UTF-8.

Предполагая, что в настройках SMTP нет других ошибок (что обычно является причиной отправки сообщений), он должен работать.

Ответ 2

Я думаю, вам нужно настроить MailSettings в system.net. Что-то вроде этого:

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

Первый вариант предназначен для использования SMTP-сервера, а второй для доставки электронной почты в вашу локальную папку. Второй вариант хорош для тестирования.