/// <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(';'); }
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); }
/// <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); }
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; }
/// <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); }
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; }
/// <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"); }
/// <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; }
public AwaitingAuthState(Client client, IMessager messager, IMimeParser mimeParser) : base(client, messager, mimeParser) { }
public ConnectedState(Client client, IMessager messager, IMimeParser mimeParser) : base(client, messager, mimeParser) { // Send a greeting immediately upon client connection _messager.SendMessage(_client, new OutboundMessageGreeting()); }
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) { }
/// <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) { }
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) { }
public AwaitingRcptCommandState(Client client, IMessager messager, IMimeParser mimeParser) : base(client, messager, mimeParser) { }
/// <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; }
/// <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) { }
/// <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; }