Итак мы многое уже знаем, как отправлять email-сообщения средствами Delphi, через smtp-сервер. Как мы знаем для этого нам нужен компонент TidSMTP ну и конечно же как же без него — это TidAntiFreeze. Также мы уже в курсе как отправлять смс-сообщения, используя смс-шлюз (это не сложнее отправлять тоже самое email-сообщение). Давайте вспомним, что для отправки сообщения нам объект типа данных — TidMessage. Для этого, необходимо, прежде чем использовать объект данного типа данных, необходимо подключить модуль idMessage в раздел Uses. Теперь поговорим о прикреплениях к письму. В Delphi предусмотрен объет типа данных для работы с вложениями к письму — TidAttachment и чтобы работать с объектом данного типа необходимо в Uses подключить idMessage (что мы уже и сделали). Работать с ним также легко, давайте попробуем.
Для начала необходимо подключиться к нашему smtp-серверу, на событие формы — OnCreate пишем следующее
procedure TForm1.FormCreate(Sender: TObject);
begin
try
IdSMTP1.AuthenticationType:=atLogin;
IdSMTP1.Host:='smtp.rambler.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='xxxxxxxxx@rambler.ru';
IdSMTP1.Password:='password';
IdSMTP1.Connect;
except
on e:Exception do
end;
end;
Теперь давайте заполним наше сообщение, это все в курсе, мы уже проходили это, я объяснял, что все значит, следовательно вопросов тут возникнуть не должно.
procedure TForm1.Button1Click(Sender: TObject);
var
msg:TIdMessage;
begin
try
msg:=TIdMessage.Create(nil);
msg.Body.Add('email text');
msg.Subject:='header email';
msg.From.Address:='xxxxxx@rambler.ru';
msg.From.Name:='Andrey';
msg.Recipients.EMailAddresses:='xxxxxx@mail.ru';
msg.IsEncoded:=True;
if IdSMTP1.Connected=True then
begin
IdSMTP1.Send(msg);
end;
msg.Free;
except
on e:Exception do
begin
msg.Free;
IdSMTP1.Disconnect;
end;
end;
Теперь создадим наши вложения, как видите ничего сложно, просто есть метод отличный в TidMessage (а точнее просто создаем переменную нашего типа — TidAttachment), который помогает прикрепить к нашему письму вложения, и указываем в нем наше сообщение, к которому мы прикрепляем файл и сам файл.
procedure TForm1.Button1Click(Sender: TObject);
var
msg:TIdMessage;
att:TIdAttachment;
begin
try
msg:=TIdMessage.Create(nil);
msg.Body.Add('email text');
msg.Subject:='header email';
msg.From.Address:='ххххххх@rambler.ru';//от кого отправляем
msg.From.Name:='Andrey';
msg.Recipients.EMailAddresses:='ххххххх@mail.ru';//кому отправляем
att:=TIdAttachment.Create(msg.MessageParts,'C:\1.txt');
msg.IsEncoded:=True;
if IdSMTP1.Connected=True then
begin
IdSMTP1.Send(msg);
end;
att.Free;
msg.Free;
except
on e:Exception do
begin
msg.Free;
att.Free;
IdSMTP1.Disconnect;
end;
end;
end;
Теперь можете спокойно отправлять ваши сообщения в html-формате, делается это примерно так.
procedure TForm1.Button1Click(Sender: TObject);
var
msg:TIdMessage;
att:TIdAttachment;
F:TextFile;
begin
try
AssignFile(F,'test.htm');
Rewrite(F);
msg:=TIdMessage.Create(nil);
msg.Body.Add('email text');
Write(F,msg.body.text);
msg.Subject:='header email';
msg.From.Address:='хххххххх@rambler.ru';
msg.From.Name:='Andrey';
msg.Recipients.EMailAddresses:='ххххххх@mail.ru';
att:=TIdAttachment.Create(msg.MessageParts,'test.htm');
msg.IsEncoded:=True;
if IdSMTP1.Connected=True then
begin
IdSMTP1.Send(msg);
end;
att.Free;
msg.Free;
CloseFile(F);
except
on e:Exception do
begin
msg.Free;
att.Free;
IdSMTP1.Disconnect;
end;
end;
end;