(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
SAP® Crystal Dashboard Design Departmental 2016 WIN INTL NUL
ABBYY Lingvo x6 Европейская Домашняя версия, электронный ключ
ABBYY Lingvo x6 Европейская Профессиональная версия, электронный ключ
ZBrush 4R6 Win Commercial Single License ESD
Inventory 9
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новые программы для Windows
Corel DRAW - от идеи до реализации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100