Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Отправка почты с помощью Delphi

Статус
В этой теме нельзя размещать новые ответы.

~Jack~

Специалист
Этот компонент реализует все необходимое для отправки электронной почты по протоколу 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 и выглядит следующим образом



рис.2. 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;
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу