Принимаем письма с электронного почтового ящика своей программой на С++.
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit3.h"
#include <IdText.hpp> // Подключаем хедер IdText.hpp
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
ListView1->Items->Clear(); //Чистим ListView1
Memo1->Lines->Clear(); //Чистим Memo1
int MailCout = 0; //Задаем числовую переменную MailCout
if (IdPOP31->Connected()) IdPOP31->Disconnect(); // Если есть подключение, то отключаем его
IdPOP31->Connect(); //Подключаемся
// Начало. Забрать почту.
MailCout = IdPOP31->CheckMessages(); // Проверяем почту
if (MailCout > 0)
{ //1
int c=0;
for (int i = 1; i <= MailCout; i++)
{ //2
IdMessage1->Clear(); // Чистим IdMessage1
IdMessage1->ClearBody(); //Чистим IdMessage1 тело
if(IdPOP31->Retrieve(i, IdMessage1))
{//3
ListView1->Items->Add(); //Процедура добавления
ListView1->Items->Item[c] ->Caption=IdMessage1->From->Text; // От кого
ListView1->Items->Item[c] ->SubItems->Add(IdMessage1->Subject); // Тема письма
ListView1->Items->Item[c] ->SubItems->Add(DateToStr(IdMessage1->Date)); // Дата письма
c++;
}//3
}//2
} // 1
return;
// Конец. Забрать почту
}
//---------------------------------------------------------------------------
void __fastcall TForm3::ListView1SelectItem(TObject *Sender, TListItem *Item, bool Selected)
{
if (ListView1->Selected != 0) //Если выбрано письмо
{//1
TIdText *MText;
Memo1->Lines->Clear(); //Чистим Memo1
if(IdPOP31->Retrieve(ListView1->Selected->Index+1, IdMessage1))
{//2
Memo1->Text=IdMessage1->Body->Text;
}
for (int i=0; i <IdMessage1->MessageParts->Count; i++)
{
if (IdMessage1->MessageParts->Items[i]->ClassNameIs("TIdText"))
{ //3
MText = (TIdText*) IdMessage1->MessageParts->Items[i];
Memo1->Text = MText->Body->Text;
}
}
}
}
//---------------------------------------------------------------------------
Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit3H
#define Unit3H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdExplicitTLSClientServerBase.hpp>
#include <IdIOHandler.hpp>
#include <IdIOHandlerSocket.hpp>
#include <IdIOHandlerStack.hpp>
#include <IdMessage.hpp>
#include <IdMessageClient.hpp>
#include <IdPOP3.hpp>
#include <IdSSL.hpp>
#include <IdSSLOpenSSL.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>
#include <Vcl.ComCtrls.hpp>
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TPanel *Panel1;
TPanel *Panel2;
TMemo *Memo1;
TListView *ListView1;
TIdSSLIOHandlerSocketOpenSSL *IdSSLIOHandlerSocketOpenSSL1;
TIdMessage *IdMessage1;
TIdPOP3 *IdPOP31;
void __fastcall Button1Click(TObject *Sender);
void __fastcall ListView1SelectItem(TObject *Sender, TListItem *Item, bool Selected);
private: // User declarations
public: // User declarations
__fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif