/// <summary>
        /// Internal helper.
        /// </summary>
        private string PrepareCheckRequestMessage(
            SpamAssassinCheckArgs e)
        {
            // Create mini-RFC822 message and translate it to DOS format for spamd.
            string requestMessage =
                @"From {SenderEMailAddress} {EMailDateUTC}
Received: from {SenderHostName} ({SenderHostAddress}) by {ServerHostName} with HTTP via ZetaSoftware;
	{EMailDateRFC2822}
From: {SenderEMailName} <{ReceiverEMailAddress}>
Date: {EMailDateRFC2822}
Subject: ZetaSoftware comment
To: {ReceiverEMailAddress}

{TextToCheck}";

            requestMessage = requestMessage.Replace("{SenderEMailName}", e.SenderEMailName);
            requestMessage = requestMessage.Replace("{SenderEMailAddress}", e.SenderEMailAddress);
            requestMessage = requestMessage.Replace("{EMailDateUTC}", e.EMailDate.ToUniversalTime().ToString("ddd MMM dd HH:mm:ss yyyy", CultureInfo.InvariantCulture));
            requestMessage = requestMessage.Replace("{SenderHostName}", e.SenderHostName);
            requestMessage = requestMessage.Replace("{SenderHostAddress}", e.SenderHostAddress);
            requestMessage = requestMessage.Replace("{ServerHostName}", e.ServerHostName);
            requestMessage = requestMessage.Replace("{EMailDateRFC2822}", e.EMailDate.ToString("r"));
            requestMessage = requestMessage.Replace("{ReceiverEMailAddress}", e.ReceiverEMailAddress);
            requestMessage = requestMessage.Replace("{TextToCheck}", e.TextToCheck);

            return(requestMessage);
        }
        /// <summary>
        /// Execute the Check command.
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public SpamAssassinCheckResult ExecuteCheck(
            SpamAssassinCheckArgs e)
        {
            string requestMessage = PrepareCheckRequestMessage(e);

            // --

            ResponsePacket responsePacket =
                SendMessageEx(SpamAssassinCommands.Check, requestMessage);

            CheckThrowResponsePacket(responsePacket);

            // --

            string[] additionalLines;
            SpamAssassinCheckResult result = new SpamAssassinCheckResult();

            InterpretCheckResponseMessage(
                responsePacket.Message,
                out additionalLines,
                result);

            return(result);
        }