/// <summary>
        /// Execute the Tell command
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public SpamAssassinTellResult ExecuteTell(SpamAssassinTellArgs e)
        {
            const string messageClassString = "spam";
            var          setString          = String.Empty;
            var          removeString       = String.Empty;

            if ((e.SetLocation & SpamAssassinTellArgs.Location.LOCAL) != 0)
            {
                setString += "local";
            }
            else if ((e.SetLocation & SpamAssassinTellArgs.Location.REMOTE) != 0)
            {
                if (!String.IsNullOrEmpty(setString))
                {
                    setString += ", ";
                }
                setString += "remote";
            }

            if ((e.RemoveLocation & SpamAssassinTellArgs.Location.LOCAL) != 0)
            {
                removeString += "local";
            }
            else if ((e.RemoveLocation & SpamAssassinTellArgs.Location.REMOTE) != 0)
            {
                if (!String.IsNullOrEmpty(removeString))
                {
                    removeString += ", ";
                }
                removeString += "remote";
            }

            var sb = new StringBuilder();

            sb.AppendLine(String.Format("Message-class: {0}", messageClassString));
            if (!String.IsNullOrEmpty(setString))
            {
                sb.AppendLine(String.Format("Set: {0}", setString));
            }
            if (!String.IsNullOrEmpty(removeString))
            {
                sb.AppendLine(String.Format("Remove: {0}", removeString));
            }

            var requestMessage = PrepareCheckRequestMessage(e);

            sb.AppendLine();
            sb.AppendLine(requestMessage);

            var responsePacket = SendMessageEx(SpamAssassinCommands.Tell, sb.ToString());

            CheckThrowResponsePacket(responsePacket);

            return(new SpamAssassinTellResult
            {
                DidSet = responsePacket.Message.IndexOf("DidSet", StringComparison.InvariantCultureIgnoreCase) >= 0,
                DidRemove = responsePacket.Message.IndexOf("DidRemove", StringComparison.InvariantCultureIgnoreCase) >= 0
            });
        }
        /// <summary>
        /// Execute the Tell command
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public SpamAssassinTellResult ExecuteTell(SpamAssassinTellArgs e)
        {
            const string messageClassString = "spam";
            var setString = String.Empty;
            var removeString = String.Empty;

            if ((e.SetLocation & SpamAssassinTellArgs.Location.LOCAL) != 0)
                setString += "local";
            else if ((e.SetLocation & SpamAssassinTellArgs.Location.REMOTE) != 0)
            {
                if (!String.IsNullOrEmpty(setString))
                    setString += ", ";
                setString += "remote";
            }

            if ((e.RemoveLocation & SpamAssassinTellArgs.Location.LOCAL) != 0)
                removeString += "local";
            else if ((e.RemoveLocation & SpamAssassinTellArgs.Location.REMOTE) != 0)
            {
                if (!String.IsNullOrEmpty(removeString))
                    removeString += ", ";
                removeString += "remote";
            }

            var sb = new StringBuilder();

            sb.AppendLine(String.Format("Message-class: {0}", messageClassString));
            if (!String.IsNullOrEmpty(setString))
                sb.AppendLine(String.Format("Set: {0}", setString));
            if (!String.IsNullOrEmpty(removeString))
                sb.AppendLine(String.Format("Remove: {0}", removeString));

            var requestMessage = PrepareCheckRequestMessage(e);
            sb.AppendLine();
            sb.AppendLine(requestMessage);

            var responsePacket = SendMessageEx(SpamAssassinCommands.Tell, sb.ToString());
            CheckThrowResponsePacket(responsePacket);

            return new SpamAssassinTellResult
            {
                DidSet = responsePacket.Message.IndexOf("DidSet", StringComparison.InvariantCultureIgnoreCase) >= 0,
                DidRemove = responsePacket.Message.IndexOf("DidRemove", StringComparison.InvariantCultureIgnoreCase) >= 0
            };
        }