Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the TextMimeEntity class
 /// </summary>
 /// <param name="mimeParser">An IMimeParser instance which is used for parsing the MIME data</param>
 /// <param name="mimeData">A string containing the MIME data for the MIME entity</param>
 public TextMimeEntity(IMimeParser mimeParser, string mimeData)
     : base(mimeParser, mimeData)
 {
     Charset = _mimeParser.ParseCharset(mimeData);
     Debug.WriteLine(ContentType);
     if (ContentType.Contains("\r\n"))
         ContentType = ContentType.Substring(0, ContentType.IndexOf('\r')).TrimEnd(';');
 }
Exemplo n.º 2
0
        public Client(ITcpClientAdapter tcpClient, CancellationToken cancellationToken, IMessager messager, IMimeParser mimeParser)
        {
            TcpClient = tcpClient;
            CancellationToken = cancellationToken;

            _clientState = new ConnectedState(this, messager, mimeParser);

            // Change to the 'awaiting EHLO' state
            _clientState = new AwaitingEhloCommandState(this, messager, mimeParser);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Get message headers.
        /// </summary>
        /// <param name="parser"></param>
        /// <param name="messageNumber"></param>
        /// <returns></returns>
        public NameValueCollection GetMessageHeaders(IMimeParser parser, int messageNumber)
        {
            if (parser == null)
            {
                throw new ArgumentNullException("parser");
            }
            TextReader          reader  = GetMessageReader(messageNumber, true);
            NameValueCollection headers = parser.ParseHeaders(reader);

            return(headers);
        }
Exemplo n.º 4
0
        public ClientManager(IMessager messager, IMimeParser mimeParser)
        {
            _messager   = messager;
            _mimeParser = mimeParser;

            _clients = new Dictionary <int, Client>();

            // Subscribe to messager events
            _messager.ClientConnected       += OnClientConnected;
            _messager.ClientMessageReceived += OnClientMessageReceived;
            _messager.ClientDisconnected    += OnClientDisconnected;
        }
Exemplo n.º 5
0
        /// <summary>
        /// Get a ReceivedMessage object using the provided parser and message number.
        /// </summary>
        /// <param name="parser">IMimeParser object</param>
        /// <param name="messageNumber">message number</param>
        /// <returns></returns>
        public ReceivedMessage GetMessage(IMimeParser parser, int messageNumber)
        {
            if (parser == null)
            {
                throw new ArgumentNullException("parser");
            }

            TextReader      reader  = GetMessageReader(messageNumber, false);
            ReceivedMessage message = parser.Parse(reader);

            return(message);
        }
Exemplo n.º 6
0
        public ClientManager(IMessager messager, IMimeParser mimeParser)
        {
            _messager = messager;
            _mimeParser = mimeParser;

            _clients = new Dictionary<int, Client>();

            // Subscribe to messager events
            _messager.ClientConnected += OnClientConnected;
            _messager.ClientMessageReceived += OnClientMessageReceived;
            _messager.ClientDisconnected += OnClientDisconnected;
        }
Exemplo n.º 7
0
        /// <summary>
        /// Initializes a new instance of the MimeEntityBase class
        /// </summary>
        /// <param name="mimeParser">An IMimeParser instance which is used for parsing the MIME data</param>
        /// <param name="mimeData">A string containing the MIME data for the MIME entity</param>
        public MimeEntityBase(IMimeParser mimeParser, string mimeData)
        {
            if (mimeData == null)
            {
                throw new ArgumentNullException("mimeParser", "mimeParser cannot be null");
            }

            _mimeParser = mimeParser;
            SetMimeData(mimeData);
            var contentType = GetHeaderValue("Content-Type");
            if (contentType.Contains(";"))
                contentType = contentType.Substring(0, contentType.IndexOf(";"));
            ContentType = contentType;
            ContentTransferEncoding = GetHeaderValue("Content-Transfer-Encoding");
        }
Exemplo n.º 8
0
 /// <summary>
 /// Returns an IMimeEntity instance by the content type parsed from the MIME data
 /// </summary>
 /// <param name="mimeParser">An IMimeParser instance which is passed to the new IMimeEntity instance</param>
 /// <param name="mimeData">A string containing the MIME data for the new IMimeEntity instance</param>
 /// <returns>
 ///     <list type="table">
 ///         <listheader>
 ///             <term>contentType</term>
 ///             <description>Type of new IMimeEntity</description>
 ///         </listheader>
 ///         <item>
 ///             <term>multipart/...</term>
 ///             <description>MultipartMimeEntity</description>
 ///         </item>
 ///         <item>
 ///             <term>text/...</term>
 ///             <description>TextMimeEntity</description>
 ///         </item>
 ///         <item>
 ///             <term>all other</term>
 ///             <description>AttachmentMimeEntity</description>
 ///         </item>
 ///     </list>
 /// </returns>
 public static IMimeEntity GetInstance(IMimeParser mimeParser, string mimeData)
 {
     IMimeEntity mimeEntity;
     var contentType = mimeParser.ParseContentType(mimeData);
     var mainType = (contentType.Contains("/"))
                        ? contentType.Substring(0, contentType.IndexOf("/"))
                        : contentType;
     switch (mainType)
     {
         case "text":
             mimeEntity = new TextMimeEntity(mimeParser, mimeData);
             break;
         case "multipart":
             mimeEntity = new MultipartMimeEntity(mimeParser, mimeData);
             break;
         default:
             mimeEntity = new AttachmentMimeEntity(mimeParser, mimeData);
             break;
     }
     return mimeEntity;
 }
Exemplo n.º 9
0
 public AwaitingAuthState(Client client, IMessager messager, IMimeParser mimeParser)
     : base(client, messager, mimeParser)
 {
 }
Exemplo n.º 10
0
 public AwaitingAuthState(Client client, IMessager messager, IMimeParser mimeParser) : base(client, messager, mimeParser)
 {
 }
Exemplo n.º 11
0
 public ConnectedState(Client client, IMessager messager, IMimeParser mimeParser) : base(client, messager, mimeParser)
 {
     // Send a greeting immediately upon client connection
     _messager.SendMessage(_client, new OutboundMessageGreeting());
 }
Exemplo n.º 12
0
        public Client(ITcpClientAdapter tcpClient, CancellationToken cancellationToken, IMessager messager, IMimeParser mimeParser)
        {
            TcpClient         = tcpClient;
            CancellationToken = cancellationToken;

            _clientState = new ConnectedState(this, messager, mimeParser);

            // Change to the 'awaiting EHLO' state
            _clientState = new AwaitingEhloCommandState(this, messager, mimeParser);
        }
Exemplo n.º 13
0
 public AwaitingDataCommandState(Client client, IMessager messager, IMimeParser mimeParser) : base(client, messager, mimeParser)
 {
 }
 /// <summary>
 /// Initializes a new instance of the MultipartMimeEntity class
 /// </summary>
 /// <param name="mimeParser">An IMimeParser instance which is used for parsing the MIME data</param>
 /// <param name="mimeData">A string containing the MIME data for the MIME entity</param>
 public MultipartMimeEntity(IMimeParser mimeParser, string mimeData)
     : base(mimeParser, mimeData)
 {
 }
Exemplo n.º 15
0
 /// <summary>
 /// Initializes a new instance of the MimeEntityBase class with empty MIME data
 /// </summary>
 /// <param name="mimeParser">An IMimeParser instance which is used for parsing the MIME data</param>
 public MimeEntityBase(IMimeParser mimeParser)
     : this(mimeParser, String.Empty)
 {
 }
Exemplo n.º 16
0
 protected AbstractClientState(Client client, IMessager messager, IMimeParser mimeParser)
 {
     _client     = client;
     _messager   = messager;
     _mimeParser = mimeParser;
 }
 /// <summary>
 /// Initializes a new instance of the MultipartMimeEntity class with empty MIME data
 /// </summary>
 /// <param name="mimeParser">An IMimeParser instance which is used for parsing the MIME data</param>
 public MultipartMimeEntity(IMimeParser mimeParser)
     : this(mimeParser, String.Empty)
 {
 }
Exemplo n.º 18
0
 public AwaitingRcptCommandState(Client client, IMessager messager, IMimeParser mimeParser)
     : base(client, messager, mimeParser)
 {
 }
Exemplo n.º 19
0
        /// <summary>
        /// Get a ReceivedMessage object using the provided parser and message number.
        /// </summary>
        /// <param name="parser">IMimeParser object</param>
        /// <param name="messageNumber">message number</param>
        /// <returns></returns>
        public ReceivedMessage GetMessage( IMimeParser parser, int messageNumber )
        {
            if( parser == null )
                throw new ArgumentNullException( "parser" );

            TextReader reader = GetMessageReader( messageNumber, false );
            ReceivedMessage message = parser.Parse( reader );
            return message;
        }
Exemplo n.º 20
0
 protected AbstractClientState(Client client, IMessager messager, IMimeParser mimeParser)
 {
     _client = client;
     _messager = messager;
     _mimeParser = mimeParser;
 }
 /// <summary>
 /// Initializes a new instance of the AttachmentMimeEntity class
 /// </summary>
 /// <param name="mimeParser">An IMimeParser instance which is used for parsing the MIME data</param>
 /// <param name="mimeData">A string containing the MIME data of the attachment</param>
 public AttachmentMimeEntity(IMimeParser mimeParser, string mimeData)
     : base(mimeParser, mimeData)
 {
 }
Exemplo n.º 22
0
 /// <summary>
 /// Get message headers.
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="messageNumber"></param>
 /// <returns></returns>
 public NameValueCollection GetMessageHeaders( IMimeParser parser, int messageNumber )
 {
     if( parser == null )
         throw new ArgumentNullException( "parser" );
     TextReader reader = GetMessageReader( messageNumber, true );
     NameValueCollection headers = parser.ParseHeaders( reader );
     return headers;
 }