Читайте также:
|
|
Практическая работа № X
Дисциплина: «Компьютерные сети»
Тема: Почтовый клиент
Специальность: «Программное обеспечение вычислительной техники и автоматизированных систем» (230105)
Разработал ___________________ / ___________________ /
Рассмотрено на
заседании ЦМК «Общепрофессиональных дисциплин (программное обеспечение)»
«___» ______________ 20__ года. Протокол № ____
ПЦМК ОПД(ПО) ___________________ / ___________________ /
Цель работы: разработать простейший почтовый клиент используя протоколы POP3 и SMTP.
Количество часов на выполнение работы: на данную работу предполагается 2 академических часа.
Программное обеспечение: Borland Delphi 7.0
Оборудование: персональный компьютер, доступ в интернет.
Краткие теоретические сведения
Почтовый сервер - сервер, обеспечивающий прием и передачу электронных писем пользователей, а также их маршрутизацию.
Почтовый клиент - программа, предназначенная для чтения, приема, отправки и других операций с письмами. С помощью этой программы пользователь имеет возможность работать с почтовыми серверами.
POP3 и SMTP - это почтовые протоколы для отправки и приема сообщений по электронной почте. POP3 - сервер входящей почты (через него пользователь получает сообщения на свой e-mail адрес), SMTP - сервер исходящей почты (через него пользователь отправляет свои сообщения другим абонентам сети).
Протокл POP3 работает следующим образом: первоначально, на нем создается отдельная папка на определенного пользователя, при обращению к которой она запрашивает логин и пароль этого пользователя (установленные им самим). Логин является названием этой папки и первым словом адреса электронной почты. Пароль также выбирается пользователем. При правильном введении логина и пароля пользователь получает доступ к своей папке и сервер автоматически включает передачу всего ее содержимого пользователю. Таков алгоритм работы сервера POP3.
Протокол SMTP работает немного по другому: пользователь соединяется с сервером (теперь сервер уже не запрашивает логин и пароль), происходит автоматическое отправление почты с компьютера пользователя на сервер SMTP, он в свою очередь проверяет адрес того, кому посылается сообщение и, если такой адрес существует, то сообщение благополучно отправляется. В случае неправильного введения или отсутствия адреса получателя, сервер SMTP отправляет специальное, генерируемое им сообщение, отправителю, сообщающее об определенной ошибке.
Порядок выполнения:
1. Зарегистрируйте почтовый ящик на сайте: www.mail.ru
2. В папке входящие должны находиться сообщения.
3. Запустите Borland Delphi 7.0
4. Создайте новый проект. File → New →Application.
5. На форму разместите следующие компоненты:
5.1. Не визуальные:
- IdPOP3 (палитра Indy Clients)
- IdMessage (палитра Indy Misc)
- IdSmtp, (палитра Indy Clients)
5.2. Визуальные:
- Edit (палитра Standart (10*))
- PageControl (палитра Win32 (2 вкладки))
- Button (палитра Standart (2*))
- CheckBox (палитра Standart)
- Label (палитра Standart)
- RadioGroup (палитра Standart)
* - числа указанные в скобках обозначают количество
6. Интерфейс программы примерно должен выглядеть:
7. Имена компонентов обозначены на форме.
7.1. Первая вкладка
7.2. Вторая вкладка
8. Т. к. мы работаем в mail.ru входящий файловый сервер будет «pop.mail.ru» (порт 110), а исходящий «smtp.mail.ru» (порт 25 или 2525).
9. Текст программы:
unit Unit1;
interface
{
}
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdSMTP, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdPOP3, ComCtrls, ExtCtrls;
Type
TForm1 = class(TForm)
Memo1: TMemo;
IdPOP31: TIdPOP3;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
Label5: TLabel;
Edit6: TEdit;
Label6: TLabel;
Edit5: TComboBox;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Button1: TButton;
Button3: TButton;
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
host,port,email,pass:string;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then // Если выбран пункт 1 «Одно сообщение»
begin
email:=Edit1.Text;
pass:=Edit2.Text;
host:=Edit3.Text;
port:=Edit4.Text;
IdPOP31.Host:=host; // Адрес почтового сервера
IdPOP31.Port:=strtoint(port); // Порт по которому будет осуществляться
подключение
IdPOP31.Username:=email; // Логин пользователя
IdPOP31.Password:=pass; // Пароль пользователя
IdMessage1.Clear; // Очистка буфера для сообщения
IdPOP31.Connect; // Подключение по протоколу POP3, настройки в
компоненте IdPOP3
Memo1.Clear; // Очистка компонента Мemo для отображения
текста письма
IdPOP31.Retrieve(1,IdMessage1);
// Получение одного сообщения
Memo1.Lines.AddStrings(IdMessage1.Body); // Передача сообщения из компонента IdMessage в
Мemo
if CheckBox1.Checked=True then
begin
IdPOP31.Delete(1); // Удаление с сервера, полученного сообщения
end;
IdPOP31.Disconnect; // Разрыв связи
end
else // Иначе, т.е вывод всех сообщений
begin
email:=Edit1.Text;
pass:=Edit2.Text;
host:=Edit3.Text;
port:=Edit4.Text;
IdPOP31.Host:=host; // Адрес почтового сервера
IdPOP31.Port:=strtoint(port); // Порт по которому будет осуществляться
подключение
IdPOP31.Username:=email; // Логин пользователя
IdPOP31.Password:=pass; // Пароль пользователя
IdMessage1.Clear; // Очистка буфера для сообщения
IdPOP31.Connect; // Подключение по протоколу POP3, настройки в
компоненте IdPOP3
Memo1.Clear;
Memo1.Lines.Add('------------------------------------------------------------------------------------------------------------------------------------------------------------------------');
Memo1.Lines.Add('Имя почтового ящика: '+Edit1.Text);
Memo1.Lines.Add('------------------------------------------------------------------------------------------------------------------------------------------------------------------------');
for i:=1 to IdPOP31.CheckMessages do
begin
IdPOP31.Retrieve(i,IdMessage1);
Memo1.Lines.Add(' '+IntToStr(i)+' От: '+IdMessage1.From.Text);
Memo1.Lines.Add(' Адрес: '+IdMessage1.From.Address);
Memo1.Lines.Add(' Имя: '+IdMessage1.From.Name);
Memo1.Lines.Add(' Тема: '+IdMessage1.Subject);
Memo1.Lines.Add(' Сервер: '+IdMessage1.MsgId);
IdPOP31.RetrieveHeader(i,IdMessage1);
Memo1.Lines.Add(' Текст сообщения: '+IdMessage1.Body.Text);
Memo1.Lines.Add(' ');
end;
IdPOP31.Disconnect;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
email:=Edit11.Text;
pass:=Edit12.Text;
host:=Edit13.Text;
port:=Edit14.Text;
IdSMTP1.Host:=host; // Адрес почтового сервера
IdSMTP1.Port:=strtoint(port); // Порт по которому будет осуществляться
подключение
IdSMTP1.Username:=email; // Логин пользователя
IdSMTP1.Password:=pass; // Пароль пользователя
IdSMTP1.AuthenticationType:=atLogin; // Тип подключения к серверу - с авторизацией
with IdMessage1 do
begin
Body.Assign(Memo1.Lines); // Передача данных из Мemo в компонент
IdMessage, для последующей отправки
From.Text:= email; // Майл отправителя письма
Recipients.EMailAddresses:= Edit5.Text; // Майл получателя письма
Subject:= Edit6.Text; // Тема письма
end;
IdSMTP1.Connect; // Соединение с почтовым сервером
try
showmessage('Сообщение доставлено!'); // Сообщение о удачном подключении к серверу
IdSMTP1.Send(IdMessage1); // Отправка письма на сервер
finally
IdSMTP1.Disconnect; // Разрыв соединения
end;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
CheckBox1.Enabled:=True
else
CheckBox1.Enabled:=False;
end;
end.
Контрольные вопросы:
1. Что такое почтовый сервер?
2. Что такое почтовый клиент?
3. Для чего нужны протоколы POP3 и SMTP?
4. Категории протоколов POP?
5. Сколько объектов используется в данной программе?
6. Сколько классов используется в данной программе?
ОБРАЗЕЦ
Московский приборостроительный техникум
государственное образовательное учреждение высшего профессионального образования
«Российский государственный торгово-экономический университет»
ПРАТИЧЕСКАЯ РАБОТА № X
По дисциплине: «Компьютерные сети»
Тема: «Почтовые клиенты»
Специальности 230105
«Программное обеспечение вычислительной техники и автоматизированных систем»
Преподаватель
______________ /А.А. Шимбирёв/
Выполнил студент группы П-___
И.И. Иванов
Дата добавления: 2015-07-08; просмотров: 251 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Цель работы: изучение свойств полевого транзистора, исследование его характеристик и параметров в "пентодном" режиме. | | | МЕТОДИЧНИЙ ПОСІБНИК |