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