整个Mimetic的入口类就是MimeEntity类,整个MIME格式文件或者字符串都是在MimeEntity内部完成解析的。
MimeEntity类很简单,其成员如下:
MimeEntity类提供了两种常用的初始化方式
迭代器初始化:
ifstream file_in("test.eml"); //文件流
ostrstream ostr<<ifstream; //转换成strstream
string str_eml=ostr.str(); //将ifstream转换成string字符串
MimeEntity me(str_eml.begin(),str_eml.end());
流初始化
ifstream file_in("test.eml");
MimeEntity me(file_in);
其中MimeEntity(Iterator beg,Iterator end,int mask = imNone)这个构造函数的第三个参数mask是解析参数,可以去下列值:
imNone //完整解析整个MIME格式文件
imHeader //忽略MIME头
imBody //忽略MIME正文
imChildParts //忽略嵌套的MIME
imPreamble //忽略冗余头
imEpilogue //忽略结束符
MimeEntity将整个MIME格式分成两部分,以空格(\r\n\r\n)为分割符,空格以上的为MIME头,存放在m_header中,空格以下的为MIME正文,存放在m_body中,可以分别通过调用成员函数header()和body()得到相应的类型值。
#include<iostream>
#include<mimetic/mimetic.h>
using namespace std;
using namespace mimetic;
int main()
{
ifstream file_in("test.eml");
if(!file_in)
return -1;
MimeEntity me(file_in);
cout<<me<<endl; //可以直接打印出该邮件内容
return 0;
}