private static void AnalyzeMessage(MimeMessage message, LearningDataSet result) { result.Adresses.AddOrIgnore(message?.Sender?.Address); result.Subjects.AddOrIgnore(message?.Subject); var urls = UrlParser.Parse(message?.TextBody); foreach (var url in urls) { result.Urls.AddOrIgnore(url); } }
public static void Analyze(IMailFolder folder, LearningDataSet result) { var messages = folder.Search(SearchQuery.All); if (messages.Count > 0) { foreach (var messageUid in messages) { var message = folder.GetMessage(messageUid); AnalyzeMessage(message, result); } } result.LastUpdate = DateTime.Now; }
private void ProcessAnalysis(IMailFolder inbox) { if ((_mailBox.Spam == null) || (_mailBox.Spam.EnableSpamProtection == false)) { return; } _learningData = _learningStorage.Read(); var needToUpdateData = _learningData.LastUpdate < DateTime.Now.Subtract(TimeSpan.FromMinutes(_mailBox.Spam.AnalysisInterval)); if (needToUpdateData) { var targetFolder = inbox.GetSubfolder(_mailBox.Spam.Target); targetFolder.Open(FolderAccess.ReadOnly); MailBoxFolderAnalyzer.Analyze(targetFolder, _learningData); _learningStorage.Save(_learningData); } }
public RuleGenerator(LearningDataSet learningDataSet, string targetFolder) { _learningDataSet = learningDataSet; _targetFolder = targetFolder; }
public void Save(LearningDataSet dataSet) { var json = JsonConvert.SerializeObject(dataSet, Formatting.Indented); File.WriteAllText(GetHash(_mailBox), Cryptography.Encrypt(json)); }