ASP.Net 응용 프로그램에서 점수를 확인할 수있는 방법이 있습니까? 닷넷과 비슷한 클래스 또는 무엇인가? 어때? 다른 스팸 필터는 어때? - 편집 된 버전 C#에서 이메일 메시지의 스팸 점수를 확인하는 방법을 찾고 있습니다.spamassassin 확인 점수 C# 코드
5
A
답변
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);
그것은 당신이 공격 스팸 검사 규칙 목록 및 결과 점수에 미치는 영향을 반환합니다.
어떤 점수를 확인 하시겠습니까? 당신은 당신이하려고하는 것에 대해 더 자세하게 설명 할 수 있습니다. http://tinyurl.com/so-hints –
Ridvan, 서버에서 전자 메일을 가져 와서 스팸 및 양호한 내용을 확인하는 시스템을 구현 하시겠습니까? 그렇다면 좋고 나쁜 메시지로 무엇을하고 싶습니까? –
보낸 사람, 제목 및 본문이 제공되면 전자 메일 메시지의 스팸 점수를 확인하는 도구를 구현하려고합니다. 이메일을 받았을 때가 아니라 이메일을 보내기 전에 또는 이메일의 스팸 점수를 표시하는 웹 도구. 나는이 http://www.codeproject.com/KB/recipes/BayesianCS.aspx를 보았지만 나에게 그것은 실제로 스팸 어쌔신이 아니다. – Ridvan