(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
FastReport.Mono Single License
GFI WebMonitor Plus Edition - подписка на 1 год
Microsoft Windows Professional 10, Электронный ключ
Business Studio 4.2 Enterprise. Конкурентная лицензия + Business Studio Portal 4.2. Пользовательская именная лицензия.
GFI FaxMaker и 1 год поддержки (10-49 лицензий)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Компьютерные книги. Рецензии и отзывы
Программирование на Visual С++
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100