.net - SmtpAppender log4net 使用 gmail smtp

标签 .net asp.net-mvc-3 iis-7.5 log4net log4net-configuration

我使用 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)

最佳答案

虽然这不是您问题的直接答案,但我相信它可以帮助您检测问题。 Log4net 静默失败,这是设计使然。为了获得有关错误的信息,您可以启用 log4net 调试

查询 How do I enable log4net internal debugging? log4net 上的常见问题解答

关于.net - SmtpAppender log4net 使用 gmail smtp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034223/

相关文章:

c# - 哪些文件类型可以使用 System.IO.File.ReadAllLines()

asp.net-mvc-3 - 从 TempData 获取值到 View 中

c# - .NET MVC3 无法通过 FileUpload 上传大文件

asp.net-mvc-3 - ASP.Net MVC 3 : optgroup support in Html. DropDownListFor

asp.net - 事件代码 : 4011 An unhandled access exception has occurred while trying to upload files using a Handler

c# - 索引超出范围且数据少于 6 行

c# - 编码 CDATA 元素的有效方法

.net - .NET Web 应用程序中的 OOP 性能

web - IIS 7.5 : Initial request to website never gets loaded

php - Doctrine ZFA\排除字段显示在 IIS 上的表单上