private void Data( SMTPContext context ) { context.WriteLine( MESSAGE_START_DATA ); SMTPMessage message = context.Message; IPEndPoint clientEndPoint = (IPEndPoint) context.Socket.RemoteEndPoint; StringBuilder header = new StringBuilder(); header.Append( String.Format( "Received: from {0} ({0} [{1}])", context.ClientDomain, clientEndPoint.Address ) ); header.Append( "\r\n" ); header.Append( String.Format( " by {0} (Sitefinity's Mail Server)", domain ) ); header.Append( "\r\n" ); header.Append( " " + System.DateTime.Now ); header.Append( "\r\n" ); message.AddData( header.ToString() ); String line = context.ReadLine(); while( !line.Equals( "." ) ) { message.AddData( line ); message.AddData( "\r\n" ); line = context.ReadLine(); } // Spool the message messageSpool.SpoolMessage( message ); context.WriteLine( MESSAGE_OK ); OnMessageReceived(new MessageEventArgs(message)); // Reset the connection. context.Reset(); }
/// <summary> /// Reset the connection state. /// </summary> private void Rset( SMTPContext context ) { if( context.LastCommand != -1 ) { // Dump the message and reset the context. context.Reset(); context.WriteLine( MESSAGE_OK ); } else { context.WriteLine( MESSAGE_INVALID_COMMAND_ORDER ); } }