BorlanD Russian Сommunity

В данной статье рассмотрим методы отправки и приема почты средствами Delphi. Прием и отправку почты реализовать довольно просто, но всё же существует множество подводных камней, поэтому лучше всего читать данную статью внимательно. Для отправки почты нам понадобится компонент idSMTP со страницы Indy Clients палитры компонентов Delphi. Данный компонент реализует всё необходимое для отправки электронной почты по протоколу SMTP (Simple Mail Transfer Protocol), обычно он использует 25 порт, но его можно поменять на другой (свойство Port). Так же необходимо произвести настройки формы (размер, цвет и т.д.)

            Начнем реализовывать наш клиент, для этого разместим на форме idSMTP. Так же произведите настройку внешнего вида формы (название, размер и т.д.). По необходимости можно изменить порт, но главное не стоит забывать, что данный порт должен быть разблокирован в файерволе. Для соединения с SMTP сервером необходимо указать его хост (свойство host). Например: IdSMTP1.Host:= 'smtp.mail.ru'; Или (как сделаем мы) разместить на форму Label и Edit. Немного забегая вперед скажу, что соединение с сервером осуществляется методом Connect.

           

            Пример:

 

procedure Connect(const ATimeout: Integer); override;

 

,где ATimeout - необязательный параметр, задает максимальное время в миллисекундах ожидания ответа с SMTP сервера, по истечении которого попытка установить соединение прекращается. Например: IdSMTP1.Connect(5000);

 

Если при соединении с сервером необходима авторизация, то значение свойства AuthenticationType нужно установить в atLogin, при этом в инспекторе объектов также нужно определить свойства Username (имя пользователя). Наример, Username почтового ящика delphi@mail.ru то имя пользователя будет в данном случае Delphi и Password (пароль на ящик), или данное действие можно сделать программно.

 

IdSMTP1.AuthenticationType:=atLogin;
IdSMTP1.Username:='delphi';
IdSMTP1.Password:='password';

 

            Если авторизация не требуется, то свойство AuthenticationType в инспекторе объектов нужно установить в atNone, либо сделать это программно:

 

IdSMTP1.AuthenticationType:=atNone;

 

В нашем же примере мы будем считать, что для авторизации нам будет требоваться логии и пароль. 

После применения метода Connect необходимо проверить результат его выполнения. Это делается с помощью свойства Connected, если оно имеет значение true, то подключение прошло нормально.

Для отправки сообщений используется функция Send.

 

Пример:

 

IdSMTP1.Send(Msg);

 

Теперь более подробно рассмотрим структуру письма. Как было уже сказано раньше, метод send отправляет тело сообщения, представляющего из себя структуру типа TIdMessage. Сама структура письма в Delphi реализуется отдельным компонентов TIdMessage. Он находиться на палитре компонентов Indy Misc.

 

Пример определения TIdMessage структуры:

 

var
Msg: TIdMessage;
begin
Msg.Subject:='тема сообщения';                  //текст темы сообщения
Msg.Recipients.EMailAddresses:='bogdanwe@mail.ru';
//указываем адрес получателя
Msg.From.Adress:='delphi@mail.ru';           //указываем автора письма
Msg.Body.Text:='текст сообщения';           //размещаем текст сообщения
Msg.Date:=StrToDate('01.12.2004');  //дата отправки письма может быть любой
end;   

 

Свойство Subject определяет тему сообщения. Свойство Recipients включает в себя свойство EMailAddresses оно определяет собой адресатов. То есть попросту кому предназначается письмо, разделителем двух и более почтовых адресов служит запятая.

 

Пример:

 

Msg.Recipients.EMailAddresses:='builder@mail.ru, delphi@mail.ru';

 

            Свойство From представляет из себя объект типа TIdEmailAddressItem в нем содержится информация об отправителя письма. Это свойство включает в себя три свойства: Name, Address, Text. Свойство Address содержит информацию об электроном ящике отправителя, оно имеет тип String.

 

            Пример:

 

Msg.From.Address:='delphi@mail.ru';

 

Свойство name представляет собой имя отправителя, имеет тип String.

 

Пример:

 

Msg.From.Name:='Иван Иванович';

 

Свойство Text содержит себе объединенную информацию этих обоих свойств. Теперь перейдем к телу письма, оно имеет тип TStrings. Теперь же поговорим об присоединение к письму файлов, то есть об аттачменте. Если вам потребовалась прикрепить файл к письму, то необходимо будет создать объект класса TidAttachment. Для этого необходимо будет применить конструктор вида:  

 

constructor Create(Collection: TIdMessageParts; const AFileName: TFileName = ''); reintroduce;

 

, где Collection представляет собой коллекцию приложений к письму, его тип TIdMessageParts. Контстанта AFileName имеющая тип TFileName являеться обычной текстовой строкой. В ней необходимо указать правильный путь к файлу.

 

Пример:

 

TIdAttachment.Create(Msg.MessageParts,'c:file.zip');

 

После отправки сообщения желательно разорвать связь с сервером, что бы не грузить канал связи. Разрыв связи производиться методом Disconnect.

 

Пример:

 

IdSMTP1.Disconnect;

Просмотров: 9200 | Категория: Delphi 7 | Дата: 24.07.2009