You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级NLog版本后无法接收邮件问题求助

NLog 5升级后邮件发送失败的解决方法

常见原因及修复步骤

1. 修正SMTP连接配置(NLog 5默认行为变更)

NLog 5的Mail目标默认启用了SSL/TLS,而NLog 4版本默认未启用。如果你的SMTP服务器不要求SSL,或使用非标准端口(如25),需要显式配置相关参数:

<target name="mailerror" xsi:type="Mail"
    smtpServer="..."
    smtpPort="25" <!-- 替换为你的SMTP服务器实际端口 -->
    enableSsl="false" <!-- 根据服务器要求设置true/false -->
    from="..."
    to="..." 
    subject="Error occurred in App"
    body="An error occurred in App. No data have been sent for today." />

2. 确认BufferingWrapper触发逻辑

NLog 5对BufferingWrapper的超时和缓存触发逻辑有细微调整,需确保配置符合预期:

  • slidingTimeout="true" 表示每次收到日志都会重置超时计时器,只有当10分钟(600000ms)内无新日志时才会触发发送
  • bufferSize="120" 要求积累满120条日志才会触发发送,或超时后发送当前缓存内容
    可以临时将flushTimeout改为10000ms(10秒)测试,验证是否是超时逻辑导致的发送延迟。

3. 启用内部日志排查具体错误

添加NLog内部日志配置,查看邮件发送时的详细错误信息:

<nlog internalLogFile="nlog-internal.log" internalLogLevel="Warn">
  <!-- 原有配置内容 -->
</nlog>

查看生成的nlog-internal.log,排查是否存在SMTP连接失败、认证错误等警告或错误信息。

4. 检查日志路由规则

确认日志规则是否将足够级别的日志(如Error)路由到mailLog1目标,确保规则配置正确:

<rules>
  <logger name="*" minlevel="Error" writeTo="mailLog1" />
</rules>

5. 补充SMTP认证信息(若服务器需要)

如果你的SMTP服务器要求账号密码验证,NLog 5需显式配置认证参数:

<target name="mailerror" xsi:type="Mail"
    smtpServer="..."
    smtpUserName="你的SMTP账号"
    smtpPassword="你的SMTP密码"
    from="..."
    to="..." 
    subject="Error occurred in App"
    body="An error occurred in App. No data have been sent for today." />

内容的提问来源于stack exchange,提问作者Samira Talebi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:49:57