Вы не авторизированы! Логин:  Пароль:  Запомнить:    Зарегистрироваться
Забыл пароль
 
 
 

Отправка почты средствами Delphi

SVD programming - Программирование Delphi, HTML, PHP, CGI. Обзоры софта, ReactOS и многое другое...
 
Главная - Новости - Публикации - Файлы - Ссылки - Форум Обратная связь
 


Друзья сайта ::

Сайтом управляют ::

Друзья сайта ::
Delphi » Отправка почты средствами Delphi
Автор: / Дата: 14:39 21.02.2006
Комментарии: Комментарии (2)
Рейтинг статьи: 0
Отправка и прием почты реализуются при помощи Delphi довольно просто. Для отправки почты нам понадобится компонент idSMTP со страницы Indy Clients палитры компонентов Delphi.


Этот компонент реализует все необходимое для отправки электронной почты по протоколу SMTP (Simple Mail Transfer Protocol - простой протокол передачи почты), использующий 25 порт, по которому посылаются команды и текст письма. Этапы отправки электронной почты следующие:

1) соединение с SMTP сервером по 25 порту;
2) подготовка тела письма, определение отправителя и получателя письма;
3) отправка письма на SMTP сервер;

Разместив на форме компонент idSMTP, займёмся его настройкой. Настройку порта можно произвести в инспекторе объектов, установив свойство Port в значение 25, или в коде программы сделать то же самое:

Код:
IdSMTP1.Port:=25;


Соединение с сервером

Для соединения с SMTP сервером, который будет осуществлять отправку нашей почты, нужно указать его URL, для сервера mail.ru это производится следующим образом :

Код:
IdSMTP1.Host := 'smtp.mail.ru';


Соединение с сервером производится методом 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:='something';


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

Код:
IdSMTP1.AuthenticationType:=atNone;


После применения метода Connect, нужно анализировать логическое свойство Connected, которое в случае удачного соединения устанавливается в True. После этого при помощи метода Send можно отправлять сообщение:

Код:
if Connected=True then IdSMTP1.Send(Msg);


Структура письма

Метод Send отправляет тело сообщения, представляющего собой структуру типа TIdMessage;

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

TidMessage Структура 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;   


С темой сообщения, я думаю, все понятно. Свойство

Код:
property Recipients: TIdEmailAddressList;


определяет получателя или получателей электронного письма. Свойством EMailAddresses, имеющего синтаксис:

Код:
property EMailAddresses: String;


конкретно определяются названия электронных учетных записей, которым адресуется письмо. Названия должны указываться через разделитель вида "," то есть через запятую. Например:

Код:
Msg.Recipients.EMailAddresses:='bogdanwe@mail.ru,delphi7@mail.ru';


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

Свойство Address содержит информацию о электронном ящике отправителя:

Код:
property Address: string;


например,

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


Свойство Name представляет собой имя отправителя:

Код:
property Name: string;


например,

Код:
Msg.From.Name:='Антон Камолов';


Свойство Text содержит информацию обоих свойств. Тело письма представляет собой объект типа TStrings:

Код:
property Body: TStrings;


Присоединяем к письму аттачмент

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

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


где Collection - объект класса TIdMessageParts, представляющее собой коллекцию приложений к электронному письму.
контстанта AFileName типа TFileName - представляет собой обычную текстовую строку с указанием правильного пути к файлу, например "C:file.zip", по умолчанию имеет значение ''.


Таким образом, продолжая наш пример, строкой вида

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


мы заполняем свойство MessageParts объекта Msg информацией о аттачменте. Теперь наша структура письма содержит информацию о аттачменте. После отправки сообщения нужно разорвать соединение с сервером, чтобы оно не "висело". Это производится методом Disconnect:

IdSMTP1.Disconnect;
Источник: http://delphi-ex.narod.ru
Автор :
Комментарии: Комментарии (2)

Внимание!

Друзья сайта
Голосование ::
Случайные статьи ::
Добавления в форуме ::
Новые комментарии ::
Пользователи on-line ::
0 пользователь, 158 гостей
 
Страница создана за 0.01 секунд

SQL общее время: 0.004 секунд
SQL запросов всего: 15
Администрация сайта не несет ответственности за содержание рекламных материалов, а так же за информацию размещаемой посетителями. При использовании материалов сайта ссылка на svdpro.info обязательна.

Powered by LDU 802

Рейтинг@Mail.ru
Copyright © 2005 - 2011 «SVD Programming»
Версия сайта для коммуникаторов
Обратная связь - Карта сайта