5

smtpAppender (gmail) で log4net を構成しました。奇妙な問題は、IIS 7.5 にアプリケーションをデプロイすると、smtpAppender が機能しないことです。

telnet コマンドを使用して gmail smtp との接続をテストしようとしました。したがって、何かがブロックされているかどうかを確認できますが、テストは正常に機能しました。

私のログ設定:

  <log4net>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <file value="C:\logs\MyLog.log"/>
      <appendToFile value="true"/>
      <maximumFileSize value="500KB"/>
      <maxSizeRollBackups value="2"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %level %logger - %message%newline"/>
      </layout>
    </appender>
    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net">
      <to value="test1@test.com" />
      <from value="test2@test.com" />
      <subject value="Error logging message" />
      <smtpHost value="smtp.gmail.com" />
      <port value="587"/>
      <authentication value="Basic" />
      <username value="test05@gmail.com"/>
      <password value="password"/>
      <EnableSsl value="true" />
      <bufferSize value="1" />
      <lossy value="true" />
      <evaluator type="log4net.Core.LevelEvaluator,log4net">
        <threshold value="ERROR" />
      </evaluator>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <conversionPattern value="%property{log4net:HostName} :: %level :: %message %newlineLogger: %logger%newlineThread: %thread%newlineDate: %date%newlineNDC: %property{NDC}%newline%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingFile"/>
      <appender-ref ref="SmtpAppender"/>
    </root>
  </log4net>

デバッグ後、以下の例外が見つかりました:

log4net:ERROR [SmtpAppender] ErrorCode: GenericFailure. Error occurred while sending e-mail notification.
System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at
   at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
   at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from)
   at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at log4net.Appender.SmtpAppender.SendEmail(String messageBody)
   at log4net.Appender.SmtpAppender.SendBuffer(LoggingEvent[] events)
4

4 に答える 4

5

これはあなたの質問に対する直接的な回答ではありませんが、問題を検出するのに役立つと思います。Log4net は黙って失敗しますが、これは仕様によるものです。何が問題なのかについての情報を得るために、log4net デバッグを有効にすることができます

log4net 内部デバッグを有効にするにはどうすればよいですか? を確認してください。log4net FAQ で

于 2013-08-03T15:14:22.950 に答える
3

問題は Gmail サーバー側にありました。メール アカウントを使用しているアドレスが疑わしいため、Gmail サーバーがメールをブロックしていました。

于 2013-08-03T22:59:37.577 に答える
0

私は構成を使用し、エラーが発生しました:

... 認証が必要です。...

Google アカウントのアクセス設定で、 [安全性の低いアプリを許可して、プログラムが GMail にアクセスできるようにする]を有効にする必要があることがわかりました。

Yahoo メールでも同じです。安全性の低いサインインを使用するアプリを許可する方法を参照してください。

于 2018-06-07T05:55:31.033 に答える