/// <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); }