Суббота
16.12.2017
21:45


Форма входа

Приветствую Вас Гость | RSS
Borland Delphi 7
Главная Регистрация Вход
Главная » 2009 » Февраль » 22 » Создание почтового клиента в Delphi 7
Создание почтового клиента в Delphi 7
15:22
В этой статье я поэтапно объясню, как создать почтовик средствами Delphi: подключение к почтовому серверу, получение и обработка почты, завершение соединения. 

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


Скачать

Категория: Статьи участников клуба | Просмотров: 2034 | Добавил: delphi | Рейтинг: 2.0/1 |
Всего комментариев: 2
2  
А никто и не заметил что текст самого письма хрен грузится

1  
Кто-то написал этот урок, а все повторили. Ошибки теже самые. Все одинаково, дажа обьяснения!!!

Имя *:
Email *:
Код *:
Меню сайта

Разделы новостей
Программные обеспечения [6]
Учебники и справочники Delphi [15]
Лабораторные работы [2]
Статьи участников клуба [36]
Советы и трюки [1]

Календарь новостей
«  Февраль 2009  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
232425262728

Поиск

Друзья сайта

Мини-чат

Наш опрос
Оцените мой сайт
Всего ответов: 71

Статистика

Copyright MyCorp © 2017