例如,为了排除故障,我需要查看哪些SMTP消息来回传输:
OUT : EHLO machinename IN : 250-ReallyCoolEmailServer Hello [10.24.41.72] IN : 250-SIZE IN : 250-PIPELINING IN : (...and so on...) OUT : MAIL FROM: <some.address@example.com> IN : 250 <some.address@example.com>... Sender ok
...等等.
我没有在文档中找到任何日志记录选项.我可以找到的唯一问题SmtpClient是,不要谈论实际的转换,或谈论使用WireShark等第三方工具.
这似乎是一个相当大的遗漏,所以我猜我只是缺少一些基本的东西.:-)
Jer*_*ert 12
对于我自己来说,我实际上更喜欢像Wireshark这样的"无偏见"的外部工具来查看实际上在线的内容.SmtpClient确实有跟踪 - 它将输出发送到System.Net跟踪 - 但这不包括实际通过网络传输的数据.当然,您可以System.Net.Sockets通过配置应用程序来获取它,如下所示:
<system.diagnostics>
<sources>
<source name="System.Net">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
<source name="System.Net.Sockets">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add
name="TraceFile"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="trace.log"
/>
</sharedListeners>
<switches>
<add name="System.Net" value="Verbose"/>
<add name="System.Net.Sockets" value="Verbose"/>
</switches>
<trace autoflush="true" />
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这产生的输出是一个原始套接字转储,它比Wireshark跟踪方便得多.
所以最后,不,你没有遗漏任何东西 - SmtpClient没有协议级别的跟踪,这确实是一个相当大的遗漏.