How can I register an SMTP session using SmtpClient?

For example, to troubleshoot, I need to see which SMTP messages go back and forth:

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

... etc.

I did not find any logging options in the documentation . The only questions I can find about SmtpClientare either not talking about seeing the actual communication, or talking about using third-party tools like WireShark.

This seems to be a pretty big omission, so I guess I just missed something fundamental. :-)

+4
source share
2 answers

For myself, I actually prefer “unbiased” external tools, such as Wireshark, in order to see what is really happening. SmtpClienthas a trace - it sends the output to the trace System.Net, but this does not include the data actually passing through the wire. You can get this, of course, using tracing System.Net.Socketsby setting up your application like this:

<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>

But, unfortunately, the output that this result gives is an unprocessed socket dump, which is much less convenient than Wireshark tracing.

, , , - SmtpClient , .

+8

, :

System.Net Verbose: 0 : [0992] SmtpClient::.ctor(host=127.0.0.1)
System.Net Information: 0 : [0992] Associating SmtpClient#47606018 with SmtpTransport#5689696
System.Net Verbose: 0 : [0992] Exiting SmtpClient::.ctor()  -> SmtpClient#47606018
System.Net Verbose: 0 : [0992] SmtpClient#47606018::Send(MailMessage#5138334)
System.Net Information: 0 : [0992] SmtpClient#47606018::Send(DeliveryMethod=Network)
System.Net Information: 0 : [0992] Associating SmtpClient#47606018 with MailMessage#5138334
System.Net Information: 0 : [0992] Associating SmtpTransport#5689696 with SmtpConnection#31950948
System.Net Information: 0 : [0992] Associating SmtpConnection#31950948 with ServicePoint#34920472
System.Net.Sockets Verbose: 0 : [0992] Socket#22453229::Socket(InterNetwork#2)
System.Net.Sockets Verbose: 0 : [0992] Exiting Socket#22453229::Socket() 
System.Net.Sockets Verbose: 0 : [0992] Socket#22453229::Connect(1:25#16777318)
System.Net.Sockets Verbose: 0 : [0992] Exiting Socket#22453229::Connect() 
System.Net Information: 0 : [0992] Associating SmtpConnection#31950948 with SmtpPooledStream#48167163
System.Net.Sockets Verbose: 0 : [0992] Socket#22453229::Receive()
System.Net.Sockets Verbose: 0 : [0992] Data from Socket#22453229::Receive
System.Net.Sockets Verbose: 0 : [0992] 00000000 : 32 32 30 20 77 32 6B 20-4D 69 63 72 6F 73 6F 66 : 220 w2k Microsof
System.Net.Sockets Verbose: 0 : [0992] 00000010 : 74 20 45 53 4D 54 50 20-4D 41 49 4C 20 53 65 72 : t ESMTP MAIL Ser
System.Net.Sockets Verbose: 0 : [0992] 00000020 : 76 69 63 65 2C 20 56 65-72 73 69 6F 6E 3A 20 35 : vice, Version: 5
System.Net.Sockets Verbose: 0 : [0992] 00000030 : 2E 30 2E 32 31 39 35 2E-36 37 31 33 20 72 65 61 : .0.2195.6713 rea
System.Net.Sockets Verbose: 0 : [0992] 00000040 : 64 79 20 61 74 20 20 53-61 74 2C 20 33 31 20 44 : dy at  Sat, 31 D
System.Net.Sockets Verbose: 0 : [0992] 00000050 : 65 63 20 32 30 30 35 20-32 32 3A 31 33 3A 31 34 : ec 2005 22:13:14
System.Net.Sockets Verbose: 0 : [0992] 00000060 : 20 2D 30 36 30 30 20 0D-0A                      :  -0600 ..
System.Net.Sockets Verbose: 0 : [0992] Exiting Socket#22453229::Receive()   -> 105#105
System.Net.Sockets Verbose: 0 : [0992] Socket#22453229::Send()
System.Net.Sockets Verbose: 0 : [0992] Data from Socket#22453229::Send
System.Net.Sockets Verbose: 0 : [0992] 00000000 : 45 48 4C 4F 20 77 32 6B-0D 0A                   : EHLO w2k..
System.Net.Sockets Verbose: 0 : [0992] Exiting Socket#22453229::Send()  -> 10#10

: http://www.systemnetmail.com/faq/4.10.aspx

-1

All Articles