/// <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); }
/// <summary> /// Internal helper. /// </summary> private void InterpretCheckResponseMessage( string responseMessage, out string[] additionalLines, SpamAssassinCheckResult result) { string[] lines = SplitLines(responseMessage); string[] firstLineColumns = lines[0].Split(' '); string spamdFlag = firstLineColumns[1]; string spamdScore = firstLineColumns[3]; string spamdThreshold = firstLineColumns[5]; // -- result.IsSpam = string.Compare(spamdFlag, "True", true) == 0; result.Score = System.Convert.ToDouble( spamdScore, CultureInfo.InvariantCulture); result.Threshold = System.Convert.ToDouble( spamdThreshold, CultureInfo.InvariantCulture); // -- ArrayList rawAdditionalLines = new ArrayList(); for (int index = 1; index < lines.Length; index++) { rawAdditionalLines.Add(lines[index]); } additionalLines = (string[])rawAdditionalLines.ToArray( typeof(string)); }