直接用IdPop3处理比较好。注意主题要自己解码,不然会是乱码。
这里推荐我兄弟invalid的写的解码函数。
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=35151
IdPop3的大致用法如下。
IdPOP31->Connect(30000);
Msg->Clear();
IdPOP31->Retrieve(k,Msg);
Msg->SaveToFile(IntToStr(k)+".msg",false);
for(int i=0;i<Msg->Headers->Count;i++)
Memo1->Lines->Add(UnCode(Msg->Headers->Strings[i]));
if(Msg->ContentType.Pos("multipart/")>0){
for(int i=0;i<Msg->MessageParts->Count;i++){
if (dynamic_cast<TIdAttachment*>(Msg->MessageParts->Items[i])){ //附件
AnsiString fname=UnCode(dynamic_cast<TIdAttachment*>(Msg->MessageParts->Items[i])->FileName);
Memo1->Lines->Add(fname);
if(FileExists(fname))
DeleteFile(fname);
dynamic_cast<TIdAttachment*>(Msg->MessageParts->Items[i])->SaveToFile(fname);
}
else{
if(dynamic_cast<TIdText*>(Msg->MessageParts->Items[i]))
Memo1->Lines->AddStrings(dynamic_cast<TIdText*>(Msg->MessageParts->Items[i])->Body);
}
}
}
else{
Memo1->Lines->AddStrings(Msg->Body);
}