Protocol |
public class ProtocolLogger : IProtocolLogger, IDisposable
The ProtocolLogger type exposes the following members.
Name | Description | |
---|---|---|
ProtocolLogger(Stream, Boolean) | Initializes a new instance of the ProtocolLogger class. | |
ProtocolLogger(String, Boolean) | Initializes a new instance of the ProtocolLogger class. |
Name | Description | |
---|---|---|
AuthenticationSecretDetector | Get or set the authentication secret detector. | |
ClientPrefix | Get or set the client prefix to use when logging client messages. | |
DefaultClientPrefix | Get or set the default client prefix to use when creating new ProtocolLogger instances. | |
DefaultServerPrefix | Get or set the default server prefix to use when creating new ProtocolLogger instances. | |
LogTimestamps | Get or set whether timestamps should be logged. | |
RedactSecrets | Get or set whether or not authentication secrets should be redacted. | |
ServerPrefix | Get or set the server prefix to use when logging server messages. | |
Stream | Get the log stream. | |
TimestampFormat | Get or set the date and time serialization format that should be used when logging timestamps. |
Name | Description | |
---|---|---|
Dispose | Releases all resource used by the ProtocolLogger object. | |
Dispose(Boolean) | Releases the unmanaged resources used by the ProtocolLogger and optionally releases the managed resources. | |
Equals | (Inherited from Object) | |
Finalize |
Releases unmanaged resources and performs other cleanup operations before the ProtocolLogger
is reclaimed by garbage collection.
(Overrides ObjectFinalize) | |
GetHashCode | (Inherited from Object) | |
GetType | (Inherited from Object) | |
LogClient | Logs a sequence of bytes sent by the client. | |
LogConnect | Logs a connection to the specified URI. | |
LogServer | Logs a sequence of bytes sent by the server. | |
MemberwiseClone | (Inherited from Object) | |
ToString | (Inherited from Object) |
public static void SendMessage (MimeMessage message) { using (var client = new SmtpClient (new ProtocolLogger ("smtp.log"))) { client.Connect ("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect); client.Authenticate ("username", "password"); client.Send (message); client.Disconnect (true); } // Example log: // // Connected to smtps://smtp.gmail.com:465/ // S: 220 smtp.gmail.com ESMTP w81sm22057166qkg.43 - gsmtp // C: EHLO [192.168.1.220] // S: 250-smtp.gmail.com at your service, [192.168.1.220] // S: 250-SIZE 35882577 // S: 250-8BITMIME // S: 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH // S: 250-ENHANCEDSTATUSCODES // S: 250-PIPELINING // S: 250-CHUNKING // S: 250 SMTPUTF8 // C: AUTH PLAIN AHVzZXJuYW1lAHBhc3N3b3Jk // S: 235 2.7.0 Accepted // C: MAIL FROM:<from.addr@gmail.com> // C: RCPT TO:<to.addr@gmail.com> // S: 250 2.1.0 OK w81sm22057166qkg.43 - gsmtp // S: 250 2.1.5 OK w81sm22057166qkg.43 - gsmtp // C: DATA // S: 354 Go ahead w81sm22057166qkg.43 - gsmtp // C: From: "LastName, FirstName" <from.addr@gmail.com> // C: Date: Thu, 27 Dec 2018 10:55:18 -0500 // C: Subject: This is a test message // C: Message-Id: <C7GVXWE3C6U4.7ZQ0K9OUHTDP1@MADUNLA-SP4.northamerica.corp.microsoft.com> // C: To: "LastName, FirstName" <to.addr@gmail.com> // C: MIME-Version: 1.0 // C: Content-Type: multipart/alternative; boundary="=-CToJI+AD2gS6z+fFlzDvhg==" // C: // C: --=-CToJI+AD2gS6z+fFlzDvhg== // C: Content-Type: text/plain; charset=utf-8 // C: Content-Transfer-Encoding: quoted-printable // C: // C: This is the text/plain message body. // C: --=-CToJI+AD2gS6z+fFlzDvhg== // C: Content-Type: text/html; charset=utf-8 // C: Content-Transfer-Encoding: quoted-printable // C: // C: <html><body><center>This is the <b>text/html</b> message body.</center></body></html> // C: --=-CToJI+AD2gS6z+fFlzDvhg==-- // C: // C: . // S: 250 2.0.0 OK 1545926120 w81sm22057166qkg.43 - gsmtp // C: QUIT // S: 221 2.0.0 closing connection w81sm22057166qkg.43 - gsmtp }