void __fastcall TMain_f::Button2Click(TObject *Sender)
{
int i, MailCount = 0, p, PartCount;
AnsiString FileExt, FileName, Subj;
TIdMessage *IdMsg;
TIdAttachment *IdAttach;
IdMsg = NULL;
Main_f->NMPOP3->Connect();
MailCount = Main_f->NMPOP3->CheckMessages();
Main_f->RzRichEditLog->Lines->Add(GetDate(2)+" Ïðîâåðêà ïî÷òû - ïèñåì íà ñåðâåðå "+MailCount);
WriteToLog();
if(MailCount > 0)
{//1
//ShowMessage("Est");
for(i = 1; i <= MailCount; i++)
{//2
if(IdMsg != NULL) delete IdMsg;
IdMsg = new TIdMessage(Main_f);
if(Main_f->NMPOP3->Retrieve(i, IdMsg))
{//3
PartCount = IdMsg->MessageParts->Count;
for(p = 0; p < PartCount; p++)
{//5
//if(IdMsg->MessageParts->Items->ClassNameIs("TIdAttachment"))
IdMsg->Body->SaveToFile(PathToExe+"Inp\\infile.txt");
{//6
//Main_f->TrayIcon->IconIndex=4;
// IdAttach = (TIdAttachment*) IdMsg->MessageParts->Items;
// FileName = IdAttach->FileName;
// Main_f->RzRichEditLog->Lines->Add(GetDate(2)+" Ïîëó÷åí ôàéë "+IdAttach->FileName+" íà÷èíàåì îáðàáîòêó...");
// WriteToLog();
//if(FileExists(FileName)) DeleteFile(FileName);
// IdAttach->SaveToFile(PathToExe+"Inp\\"+FileName);
// //IdAttach->SaveToFile(FileName);
}//6
}//5
}//3
//Main_f->NMPOP3->Delete(i);
}//2
}//1
Main_f->NMPOP3->Disconnect();
if(IdMsg != NULL) delete IdMsg;
}
сохранить сообщение (имейл)
Есть такой код:
Код:
я хочу сохранить тело письма в файл, для этого как видно из кода добавил это:
IdMsg->Body->SaveToFile(PathToExe+"Inp\\infile.txt");
файл infile.txt создается, но почему то он пустой, подскажите пж что я не так седлал?
или подскажите как полностью письмо сохранить, чтоб было nazvanie.eml
Во вторых - указывайте класс компонента который вы используете - если вы конечно хотите что бы вам помогли. У компонента TNMPOP3 нет метода Retrieve (по крайней мере в версиях билдера 5.0/6.0).
В третьих используйте отладчик.
Код:
if(Main_f->NMPOP3->Retrieve(i, IdMsg))
{//3
//IdMsg->Body->SaveToFile(PathToExe+"Inp\\infile.txt");
//MemoReport->Lines->AddStrings( ((TIdText*)IdMsg->MessageParts->Items)->Body) ;
PartCount = IdMsg->MessageParts->Count;
//ShowMessage();
for(p = 0; p < PartCount; p++)
{//5
if (IdMsg->MessageParts->Items->ClassNameIs("TIdText"))
{
FileStringsBody->AddStrings(( (TIdText*)IdMsg->MessageParts->Items)->Body);
}
}//5
FileStringsBody->SaveToFile(PathToExe+"Inp\\InpFile.txt");
FileStringsBody->Clear();
}//3
{//3
//IdMsg->Body->SaveToFile(PathToExe+"Inp\\infile.txt");
//MemoReport->Lines->AddStrings( ((TIdText*)IdMsg->MessageParts->Items)->Body) ;
PartCount = IdMsg->MessageParts->Count;
//ShowMessage();
for(p = 0; p < PartCount; p++)
{//5
if (IdMsg->MessageParts->Items->ClassNameIs("TIdText"))
{
FileStringsBody->AddStrings(( (TIdText*)IdMsg->MessageParts->Items)->Body);
}
}//5
FileStringsBody->SaveToFile(PathToExe+"Inp\\InpFile.txt");
FileStringsBody->Clear();
}//3
кстати на форуме инди, посоветовали не if (IdMsg->MessageParts->Items
->ClassNameIs("TIdText"))
а
if (IdMsg->MessageParts->Items
->InheritsFrom(__classid(TIdText)) )