Створення поштового клієнта в Delphi 7 (исходники), Різне, Програмування, статті

Для роботи з мережею, в Delphi використовуються Indy компоненти, які ви можете знайти на декількох вкладках середовища розробки. Знайдіть на вкладці Indy Clients – компонент IdPOP3, на вкладці Indy Misc – компонент IdMessage. За допомогою компонента IdPOP3 ми зможемо здійснити підключення до поштового сервера по протоколу POP3 і отримати необхідну нам кількість повідомлень. Компонент IdMessage буде використовуватися, як буфер для одержуваного письма. Ще нам потрібно memo для відображення тексту листа, і кнопка для завантаження чергового повідомлення.

Отримання одного листа:

procedure TForm1.Button1Click(Sender: TObject);
   begin
POP3.Host: = “mail.58r.ru”; / / адреса поштового сервера
POP3.Port: = 110; / / порт по якому буде здійснюватися підключення
POP3.Username: = “test +58 r.ru”; / / Логін користувача
POP3.Password: = “12345666”; / / пароль користувача
IdMessage.Clear; / / очищення буфера для повідомлення
POP3.Connect; / / підключення по протоколу POP3, з налагодження в компоненті IdPOP3, з ім’ям POP3
Memo1.Clear; / / очищення компонента memo для відображення тексту листа.
POP3.Retrieve (1, IdMessage); / / отримання одного повідомлення
Memo1.Lines.AddStrings (IdMessage.Body); / / передача повідомлення з компонента IdMessage в memo
POP3.Delete (1); / / видалення з сервера, отриманого повідомлення
POP3.Disconnect; / / розрив зв’язку
end; Звичайно потрібно завантажити декілька повідомлень, все що є на сервері. Я вирішив обмежитися 10 листами, щоб не ускладнювати код. Отримувані повідомлення зберігаються в тій же папці що і поштова програма.

Отримання 10 листів:

procedure TForm1.Button2Click(Sender: TObject);
label f;
var
mailcicl: integer; / / лічильник одержуваних листів
addr: string; / / папка у якій будуть зберігатися отримані листи
begin
POP3.Host: = “mail.58r.ru”; / / адреса поштового сервера
POP3.Port: = 110; / / порт по якому буде здійснюватися підключення
POP3.Username: = “test +58 r.ru”; / / Логін користувача
POP3.Password: = “12345666”; / / пароль користувача
addr: = ExtractFilePath (Application.ExeName); / / отримання адреси папки, в якій знаходитися наша програма
POP3.Connect; / / підключення до сервера
for mailcicl: = 1 to 10 do / / цикл отримання листів
   begin
if POP3.CheckMessages <1 then goto f; / / Якщо листів немає, то вийти і циклу
IdMessage.Clear; / / очищення буфера для повідомлення
Memo1.Clear; / / очищення компонента memo для відображення тексту листа.
POP3.Retrieve (1, IdMessage); / / отримання одного повідомлення
Memo1.Lines.AddStrings (IdMessage.Body); / / передача повідомлення з компонента IdMessage в memo
Memo1.Lines.SaveToFile (addr + inttostr (mailcicl) + “. Txt”); / / збереження листа в папці, де знаходиться наша програма
POP3.Delete (mailcicl); / / видалення листа на сервері
   end;
f: / / мітка виходу з циклу
POP3.Disconnect; / / розрив з’єднання з сервером end;

Кожне повідомлення має атрибути – це майл відправника, тема повідомлення, важливість та інші елементи. Вивчіть компонент IdMessage, щоб знати всі можливі атрибути.

Отримання листа з атрибутами:


procedure TForm1.Button3Click(Sender: TObject);
var
   i,numPosts: Integer;
begin
POP3.Host: = “mail.58r.ru”; / / адреса поштового сервера
POP3.Port: = 110; / / порт по якому буде здійснюватися підключення
POP3.Username: = “test +58 r.ru”; / / логін користувача
POP3.Password: = “12345666”; / / пароль користувача
IdMessage.Clear; / / очищення буфера для повідомлення
POP3.Connect; / / підключення по протоколу POP3, з налагодження в компоненті IdPOP3, з ім’ям POP3
Memo1.Clear; / / очищення компонента memo для відображення тексту листа.
POP3.Retrieve (1, IdMessage); / / отримання одного повідомлення
Memo1.Lines.AddStrings (IdMessage.Body); / / передача повідомлення з компонента IdMessage в memo


/ / Вивід в компоненти Label інформації про повідомлення.
   Label1.Caption := IdMessage.From.Text;
   Label2.Caption := IdMessage.Recipients.EmailAddresses;
   Label3.Caption := IdMessage.CCList.EMailAddresses;
   Label4.Caption := IdMessage.Subject;
   Label5.Caption := FormatDateTime(“dd mmm yyyy hh:mm:ss”, IdMessage.Date);
   Label6.Caption := IdMessage.ReceiptRecipient.Text;
   Label7.Caption := IdMessage.Organization;

POP3.Delete (1); / / видалення з сервера, отриманого повідомлення
POP3.Disconnect; / / розрив зв’язку
end;

Відправлення пошти здійснюється по протоколу SMTP, компонент IdSMTP, ви зможете знайти його на вкладці Indy Clients. У даному прикладі відправка пошти буде здійснюватися після авторизації сервері, лист відправляється з Майлі test@58r.ru, на майл test@58r.ru.

Відправка одного листа:

procedure TForm1.Button4Click(Sender: TObject);
begin
SMTP.Host: = “mail.58r.ru”; / / адреса поштового сервера
SMTP.Port: = 25; / / порт по якому буде здійснюватися підключення
SMTP.Username: = “test +58 r.ru”; / / логін користувача
SMTP.Password: = “12345666”; / / пароль користувача
SMTP.AuthenticationType: = atLogin; / / тип підключення до сервера – з авторизацією
   with IdMessage do
      begin
Body.Assign (Memo1.Lines); / / передача даних з memo в компонент IdMessage, для подальшої відправки
From.Text: = “test@58r.ru”; / / майл відправника листа
Recipients.EMailAddresses: = “test@58r.ru”; / / майл одержувача листа
Subject: = “Programmersclub.ru”; / / тема листа

        end;

SMTP.Connect; / / з’єднання з поштовим сервером
         try
showmessage (“Відбулося підключення до сервера”); / / повідомлення про вдалому підключенні до сервера
SMTP.Send (IdMessage); / / відправка листа на сервер
         finally
SMTP.Disconnect; / / розрив з’єднання
         end; end;

Delphi исходники поштового клієнта:

Коли ви відкриєте исходники (див. файли для завантаження), ви побачите 4 кнопки, кожного розглянутого варіанту відповідає кнопка на формі, в memo ви зможете бачити текст листа, внизу форми розміщено кілька label, в яких відображаються атрибути письма. Для роботи з мережею використовуються три Indy компонента IdPOP3, IdSMTP, IdMessage.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*