Click here to Skip to main content
15,887,596 members
Articles / Programming Languages / C#

How to Create a Spam Filter or Automatic Category Sort Algorithm with Your Mail Application

Rate me:
Please Sign up or sign in to vote.
5.00/5 (9 votes)
29 Jul 2012MIT3 min read 40.1K   1.2K   19  
This article describes automatic category filters in mail applications.
In this article, you will learn how to create a spam filter on your mail application. You will also see how to filter your mail based on whether the mail tells about a particular topic or not.
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace HigLabo.Net.Pop3
{
    /// <summary>Represents result of stat command.
    /// </summary>
    public class StatCommandResult : Pop3CommandResult
    {
        private class RegexList
        {
            public static readonly Regex TotalMessageCount = new Regex(@"^.*\+OK[\s|\t]+([0-9]+)[\s|\t]+.*$");
            public static readonly Regex TotalSize = new Regex(@"^.*\+OK[\s|\t]+[0-9]+[\s|\t]+([0-9]+).*$");
        }
        private Int64 _TotalMessageCount = 0;
        private Int64 _TotalSize = 0;
        /// <summary>
        /// 
        /// </summary>
        public Int64 TotalMessageCount
        {
            get { return this._TotalMessageCount; }
        }
        /// <summary>
        /// 
        /// </summary>
        public Int64 TotalSize
        {
            get { return this._TotalSize; }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="text"></param>
        public StatCommandResult(String text)
            : base(text)
        {
            if (this.Ok == true)
            {
                this._TotalMessageCount = StatCommandResult.GetTotalMessageCount(text);
                this._TotalSize = StatCommandResult.GetTotalSize(text);
            }
        }
        /// <summary>Analyze response single line and get total mail count of mailbox.
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        private static Int64 GetTotalMessageCount(String text)
        {
            return Int64.Parse(RegexList.TotalMessageCount.Replace(text.Replace("\r\n", ""), "$1"));
        }
        /// <summary>Analyze response single line and get total mail size of mailbox.
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        private static Int64 GetTotalSize(String text)
        {
            return Int64.Parse(RegexList.TotalSize.Replace(text.Replace("\r\n", ""), "$1"));
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
CEO TinyBetter, Inc
Japan Japan
I'm a CEO of TinyBetter, Inc in Japan.

Comments and Discussions