我尝试在LogNet中使用SmtpAppender:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="user1@company.com,user2@company.com" />
<from value="noreply@company.com" />
<subject value="Error" />
<smtpHost value="smtp.company.com" />
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="DEBUG"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>
当我在Log4net中启用调试日志记录时,收到以下错误:
log4net:ERROR [SmtpAppender] ErrorCode:GenericFailure。发生了错误 同时发送电子邮件通知。 System.Net.Mail.SmtpException: 邮件发送失败。 ---&GT; System.Net.WebException:无法连接 到远程服务器---&gt; System.Net.Sockets.SocketException:An 尝试以访问禁止的方式访问套接字 权限(来自SMTP-Server的IP):25 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress(socketAddress)at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, 插座s4,插座s6,插座&amp; socket,IPAddress&amp;地址, ConnectSocketState状态,IAsyncResult asyncResult,Exception&amp; 例外)---内部异常堆栈跟踪结束--- at System.Net.ServicePoint.GetConnection(PooledStream PooledStream, 对象所有者,布尔异步,IPAddress&amp;地址,插座&安培; abortSocket, 插座及放大器; System.Net.PooledStream.Activate(Object中的abortSocket6) owningObject,Boolean async,GeneralAsyncDelegate asyncCallback)at System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback)at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback,Int32 creationTimeout)at System.Net.Mail.SmtpConnection.GetConnection(的ServicePoint servicePoint)at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) 在System.Net.Mail.SmtpClient.GetConnection()处 System.Net.Mail.SmtpClient.Send(MailMessage message)---结束 内部异常堆栈跟踪--- at System.Net.Mail.SmtpClient.Send(MailMessage消息)at log4net.Appender.SmtpAppender.SendEmail(String messageBody)at log4net.Appender.SmtpAppender.SendBuffer(LoggingEvent [] events)
然而。当我尝试从使用此log4net配置的程序中通过同一SMTP-Server发送邮件时:
MailMessage msg = new MailMessage(sender, recipients, subject, body);
mtpClient client = new SmtpClient("smtp.company.com", 25);
client.Send(msg);
一切正常。所以这不是一个简单的SMTP-Server / FireWall-Issue。
SMTPAppender的工作方式是否与.NET中的标准StmpClient.Send()不同,可能导致此问题?
答案 0 :(得分:0)
@Bob Geiger指出我正确的方向,Log4net似乎使用完全相同的机制。
事实证明这是一个Virusscan / Spam-Protection问题。仅限定义的应用程序允许通过我们的smtp-server发送邮件。虽然我们的一个程序使用了与log4net相同的后端 - 应用程序,但它有一个不同的文件名,所以允许发送邮件,而另一个程序不是。
我们必须在virusscan配置中允许特定的.exe文件。