(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Создание почтового клиента в Delphi 7 (исходники)

Источник: programmersclub

Для работы с сетью, в 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+58r.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+58r.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+58r.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+58r.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.

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 04.11.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
TeeBI for RAD Studio Suite with source code single license
Microsoft Office для дома и учебы 2019 (лицензия ESD)
NERO 2016 Classic ESD. Электронный ключ
Quest Software. Toad for Oracle Development Suite
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Утиль - лучший бесплатный софт для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100