Вторник, 14.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Нашли свой исходник?
Всего ответов: 94
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Сеть-интернет » Почта

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

В этой статье я поэтапно объясню, как создать почтовик средствами 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.

Скачать исходные коды почтовика

Получить ссылку на материал

Категория: Почта | Добавил: Барон (10.12.2011)
Просмотров: 3762 | Теги: клиент, почта, delphi | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
Web-приложения [6]
Почта [12]
Работа с HTTP [4]
Робота с XML [4]
Сервер [3]
Разные [50]
Королевство Delphi © 2010-2024
Яндекс цитирования