【问题标题】:log4net smtp appender not sending emailslog4net smtp appender 不发送电子邮件
【发布时间】:2013-03-20 12:30:49
【问题描述】:

我正在尝试实现 log4net 来发送电子邮件。
以下是我的代码,但它不发送电子邮件。

 <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="...." />
  <from value="..." />
  <subject value="Logging Message" />
  <smtpHost value="smtp.gmail.com" />
  <port value="465"/>
  <authentication value="Basic" />
  <username value="..."/>
  <password value="..."/>
  <EnableSsl value="true" />
  <bufferSize value="1" />
  <lossy value="true" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="WARN"/>
  </evaluator>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception" />
  </layout>
</appender>

<root>
  <level value="WARN" />
  <appender-ref ref="SmtpAppender" />
</root>

在 AssemblyInfo.cs 中

 [assembly: log4net.Config.XmlConfiguratorAttribute(Watch = true)]

这就是我创建日志对象的方式

  private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

此配置适用于文件输出,即 RollingFileAppender,但不适用于 SmtpAppender。

N 我尝试了许多来自互联网的解决方案,但都没有真正的帮助。

请告诉我正确的方向。提前谢谢 :)

【问题讨论】:

  • 您的配置文件中的 SMTP 设置是什么样的,您可以显示您需要的配置部分吗SMTP.Appender
  • “不发送电子邮件”真的非常模糊。问题可能出在很多地方。您的第一步是使用您可以控制的 SMTP 主机。这会将问题缩小到它是否使用附加程序与 SMTP 主机是否拒绝消息。 (这是一个非常大的区别。)尝试使用类似 smtp4dev (smtp4dev.codeplex.com) 作为本地 SMTP 主机来测试记录器是否至少在做你认为它在做的事情。
  • 据我记忆,Gmail 仅支持通过加密连接的 SMTP。而且我怀疑普通的 stmp appender 可以建立它。
  • 我刚刚使用我自己的 gmail 帐户测试了我的答案,它使用 log4net Appender C# .NET 4.0 VS2010 工作,所以不知道为什么我的答案对你没有帮助。我将我的答案标记为删除,祝你好运还需要看看你背后的代码在你如何发送你的凭证方面是什么样的......
  • 您的问题也看起来像您没有获得记录器的正确名称,例如var log = LogManager.GetLogger("SMTPAppender");,那么您也需要这样做才能阅读配置log4net.Config.XmlConfigurator.Configure();

标签: c# log4net smtpappender


【解决方案1】:

我正在使用非常相似的附加程序将 SMTP 邮件发送到 Gmail,但在我的情况下,我使用了不同的端口:

<port value="587"/>

所有其他设置都相同,因此请尝试一下,看看它是否适合您。这是 Gmail 用于 TLS 的端口,referenced here

【讨论】:

    【解决方案2】:

    对于那些遇到 SmtpAppender 问题的人,我建议将以下内容放入您的 appSettings 节点。

    <appSettings>
      <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
    

    然后它将输出如下诊断信息,为您指明正确的方向

    log4net: Setting Property [From] to String value [tomas@kodi.is]
    log4net: Setting Property [Subject] to String value [Kodiak OMS Shortcode service]
    log4net: Setting Property [SmtpHost] to String value [mail.sip.is]
    log4net: Setting Property [Port] to Int32 value [25]
    log4net: Setting Property [BufferSize] to Int32 value [1]
    log4net: Setting Property [EnableSsl] to Boolean value [True]
    log4net: Setting Property [Threshold] to Level value [DEBUG]
    log4net: Setting Property [Lossy] to Boolean value [False]
    log4net: Converter [message] Option [] Format  [min=-1,max=2147483647,leftAlign=False]
    log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Setting Property [ConversionPattern] to String value [%utcdate [%level] - %message%newline%exception]
    log4net: Converter [utcdate] Option [] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Converter [level] Option [] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Converter [literal] Option [] - ] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Converter [exception] Option [] Format [min=-1,max=2147483647,leftAlign=False]
    log4net: Setting Property [Layout] to object [log4net.Layout.PatternLayout]
    log4net: Created Appender [EmailLog]
    log4net: Adding appender named [EmailLog] to logger [EmailLogger].
    log4net: Hierarchy Threshold []
    log4net:ERROR [SmtpAppender] ErrorCode: GenericFailure. Error occurred while sending e-mail notification.
    System.Net.Mail.SmtpException: Server does not support secure connections.
       at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
       at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
       at System.Net.Mail.SmtpClient.GetConnection()
       at System.Net.Mail.SmtpClient.Send(MailMessage message)
       at log4net.Appender.SmtpAppender.SendEmail(String messageBody)
       at log4net.Appender.SmtpAppender.SendBuffer(LoggingEvent[] events)
    

    【讨论】:

    • 我有同样的问题...你在哪里看到这个...输出诊断
    • @Ziggler 在 Visual Studio 输出窗口中
    【解决方案3】:

    请参阅我的工作示例。如果您在 GMail 中使用 2 因素身份验证,请不要忘记生成密码并在此处使用:

    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
      <to value="****" />
      <from value="****" />
      <subject value="Crash log" />
      <smtpHost value="smtp.gmail.com" />
      <authentication value="Basic" />
      <port value="587" />
      <username value="****" />
      <password value="****" />
      <bufferSize value="10" />
      <EnableSsl value="true"/>
      <lossy value="true" />
      <threshold value="DEBUG" />
      <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="WARN"/>
      </evaluator>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{dd/MM/yyyy hh:mm:ss.fff}&#9;%-5level&#9;%-15logger&#9;%message%newline" />
      </layout>
    </appender>
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2021-04-05
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      相关资源
      最近更新 更多