www.pudn.com > despop3client_demo.zip > Pop3Parse.cs
using System;
using System.Text.RegularExpressions;
namespace Pop3
{
///
/// Summary description for Pop3ParseMessage.
///
public class Pop3Parse
{
private static string[] m_lineUpperTypeString =
{
"From",
"To",
"Subject",
"Content-Type"
};
private static string[] m_lineSubTypeString =
{
"Content-Type",
"Content-Transfer-Encoding",
"Content-Description",
"Content-Disposition"
};
private static string[] m_nextLineTypeString =
{
"name",
"filename"
};
// Mapping to lineSubTypeString ...
public const int ContentTypeType = 0;
public const int ContentTransferEncodingType = 1;
public const int ContentDescriptionType = 2;
public const int ContentDispositionType = 3;
// Mapping to nextLineTypeString ...
public const int NameType = 0;
public const int FilenameType = 1;
// Non-string mappers ...
public const int UnknownType = -99;
public const int EndOfHeader = -98;
public const int MultipartBoundaryFound = -97;
public const int ComponetsDone = -96;
public static string[] LineUpperTypeString
{
get { return m_lineUpperTypeString; }
}
public static string[] LineSubTypeString
{
get { return m_lineSubTypeString; }
}
public static string[] NextLineTypeString
{
get { return m_nextLineTypeString; }
}
public static string From(string line)
{
return
Regex.Replace(line
,@"^From:.*[ |<]([a-z|A-Z|0-9|\.|\-|_]+@[a-z|A-Z|0-9|\.|\-|_]+).*$"
,"$1");
}
public static string Subject(string line)
{
return
Regex.Replace(line
,@"^Subject: (.*)$"
,"$1");
}
public static string To(string line)
{
return
Regex.Replace(line
,@"^To:.*[ |<]([a-z|A-Z|0-9|\.|\-|_]+@[a-z|A-Z|0-9|\.|\-|_]+).*$"
,"$1");
}
public static string ContentType(string line)
{
return
Regex.Replace(line
,@"^Content-Type: (.*)$"
,"$1");
}
public static string ContentTransferEncoding(string line)
{
return
Regex.Replace(line
,@"^Content-Transfer-Encoding: (.*)$"
,"$1");
}
public static string ContentDescription(string line)
{
return
Regex.Replace(line
,@"^Content-Description: (.*)$"
,"$1");
}
public static string ContentDisposition(string line)
{
return
Regex.Replace(line
,@"^Content-Disposition: (.*)$"
,"$1");
}
public static bool IsMultipart(string line)
{
return
Regex.Match(line,"^multipart/.*").Success;
}
public static string MultipartBoundary(string line)
{
return
Regex.Replace(line
,"^.*boundary=[\"]*([^\"]*).*$"
,"$1");
}
public static string Name(string line)
{
return Regex.Replace(line,
"^[ | ]+name=[\"]*([^\"]*).*$","$1");
}
public static string Filename(string line)
{
return Regex.Replace(line,
"^[ | ]+filename=[\"]*([^\"]*).*$","$1");
}
public static int GetSubHeaderNextLineType(string line)
{
int lineType = Pop3Parse.UnknownType;
for(int i=0; i