2011-02-18 6 views
5

ASP.Net 응용 프로그램에서 점수를 확인할 수있는 방법이 있습니까? 닷넷과 비슷한 클래스 또는 무엇인가? 어때? 다른 스팸 필터는 어때? - 편집 된 버전 C#에서 이메일 메시지의 스팸 점수를 확인하는 방법을 찾고 있습니다.spamassassin 확인 점수 C# 코드

+0

어떤 점수를 확인 하시겠습니까? 당신은 당신이하려고하는 것에 대해 더 자세하게 설명 할 수 있습니다. http://tinyurl.com/so-hints –

+0

Ridvan, 서버에서 전자 메일을 가져 와서 스팸 및 양호한 내용을 확인하는 시스템을 구현 하시겠습니까? 그렇다면 좋고 나쁜 메시지로 무엇을하고 싶습니까? –

+0

보낸 사람, 제목 및 본문이 제공되면 전자 메일 메시지의 스팸 점수를 확인하는 도구를 구현하려고합니다. 이메일을 받았을 때가 아니라 이메일을 보내기 전에 또는 이메일의 스팸 점수를 표시하는 웹 도구. 나는이 http://www.codeproject.com/KB/recipes/BayesianCS.aspx를 보았지만 나에게 그것은 실제로 스팸 어쌔신이 아니다. – Ridvan

답변

1

내가 생각하는 당신이 검색되지만, 코드 프로젝트에 어쌔신 서버와의 통신을 단순화하는 C#을 래퍼가 무엇인지 정확히 확인하지 :

희망이 도와 줘요!

4

여기 내에 대해 작성한 C#에서 실행중인 스팸 어쌔신 이메일 확인에 연결하기위한 "점수 확인"코드가 있습니다. SA를 설정하여 서버에서 실행하고 액세스 권한을 설정하십시오.

그런 다음 당신은 그것을 호출하는 코드를 사용할 수 있습니다

public class SimpleSpamAssassin 
{ 
    public class RuleResult 
    { 
     public double Score = 0; 
     public string Rule = ""; 
     public string Description = ""; 

     public RuleResult() { } 
     public RuleResult(string line) 
     { 
      Score = double.Parse(line.Substring(0, line.IndexOf(" ")).Trim()); 
      line = line.Substring(line.IndexOf(" ") + 1); 
      Rule = line.Substring(0, 23).Trim(); 
      Description = line.Substring(23).Trim(); 
     } 
    } 
    public static List<RuleResult> GetReport(string serverIP, string message) 
    { 
     string command = "REPORT"; 

     StringBuilder sb = new StringBuilder(); 
     sb.AppendFormat("{0} SPAMC/1.2\r\n", command); 
     sb.AppendFormat("Content-Length: {0}\r\n\r\n", message.Length); 
     sb.AppendFormat(message); 

     byte[] messageBuffer = Encoding.ASCII.GetBytes(sb.ToString()); 

     using (Socket spamAssassinSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) 
     { 
      spamAssassinSocket.Connect(serverIP, 783); 
      spamAssassinSocket.Send(messageBuffer); 
      spamAssassinSocket.Shutdown(SocketShutdown.Send); 

      int received; 
      string receivedMessage = string.Empty; 
      do 
      { 
       byte[] receiveBuffer = new byte[1024]; 
       received = spamAssassinSocket.Receive(receiveBuffer); 
       receivedMessage += Encoding.ASCII.GetString(receiveBuffer, 0, received); 
      } 
      while (received > 0); 

      spamAssassinSocket.Shutdown(SocketShutdown.Both); 

      return ParseResponse(receivedMessage); 
     } 

    } 

    private static List<RuleResult> ParseResponse(string receivedMessage) 
    { 
     //merge line endings 
     receivedMessage = receivedMessage.Replace("\r\n", "\n"); 
     receivedMessage = receivedMessage.Replace("\r", "\n"); 
     string[] lines = receivedMessage.Split('\n'); 

     List<RuleResult> results = new List<RuleResult>(); 
     bool inReport = false; 
     foreach (string line in lines) 
     { 
      if (inReport) 
      { 
       try 
       { 
        results.Add(new RuleResult(line.Trim())); 
       } 
       catch 
       { 
        //past the end of the report 
       } 
      } 

      if (line.StartsWith("---")) 
       inReport = true; 
     } 

     return results; 
    } 

} 

사용법은 매우 간단합니다 :

List<RuleResult> spamCheckResult = SimpleSpamAssassin.GetReport(IP OF SA Server, FULL Email including headers); 

그것은 당신이 공격 스팸 검사 규칙 목록 및 결과 점수에 미치는 영향을 반환합니다.