升级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
相关产品推荐
相关产品推荐

