gpt4 book ai didi

c# - 如何让 Log4Net 发送发件人值设置为当前用户电子邮件地址的电子邮件

转载 作者:太空狗 更新时间:2023-10-29 18:20:23 25 4
gpt4 key购买 nike

关于 Log4Net Config Examples该网页显示了有关如何设置 SmtpAppender 的示例。

所以我将以下设置添加到我的 app.config 文件中,并且在记录警告或更高级别时成功发送电子邮件(这很好)。

<appender name="EmailAppender" type="log4net.Appender.SmtpAppender">
<to value="me@mycompany.com" />
<from value="me@mycompany.com" />
<subject value="test logging message" />
<smtpHost value="smtpserver.mycompany.com" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>

但是 From 值是用我的电子邮件地址硬编码的。

我的应用程序是一个 WinForms 应用程序,它将被部署到用户的 PC 上,因此知道哪个用户遇到了警告/错误会非常方便。

是否可以设置 Log4Net SmtpAppender,以便 From 值使用当前用户的电子邮件地址?

感谢您的帮助。

最佳答案

有两个问题

1) 确定用户的电子邮件地址。如果它们是域的一部分,那么您可以尝试

  System.DirectoryServices.AccountManagement.UserPrincipal.Current.EmailAddress

2).在 Log4net 中使用它。应该可以使用属性来做到这一点,例如

如果你改变你的app.config

<from value="me@mycompany.com" / >

<from type="log4net.Util.PatternString" value="%property{From}" / >

并在你的程序中添加一行来设置属性,例如

log4net.GlobalContext.Properties["From"] = 
System.DirectoryServices.AccountManagement.UserPrincipal.Current.EmailAddress ;

您可能还需要将缓冲区大小设置为 1。

为了安全起见,将用户名也包含在错误消息中可能是明智的。

这种方法的缺点是,如果发件人地址丢失或不正确,电子邮件可能会丢失。

关于c# - 如何让 Log4Net 发送发件人值设置为当前用户电子邮件地址的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14256231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com