|
Навигация
|
Главная » Delphi Создание почтового клиента в 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. Добавление методов и событий в компонент. Embarcadero увеличила продажи Delphi и C++ за год на 54%. Мануал по созданию компактного кода Delphi. Embarcadero Delphi XE3. Embarcadero ToolCloud облегчает развертывание, управление и доступ к инструментальному ПО. Главная » Delphi |
© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено. |