vložil [Z]
10. ledna 2011 21:39
V jednom minulém článku popsal Radek jak odeslat e-mail za pomocí Synapse.
Já dávám přednost Indy a proto zde připojuji
jednoduchý návod jak Indy využít ke stejnému účelu.
Komponenty pro internetovou komunikaci Indy (zkratka Internet direct) jsou
výchozí součástí Delphi už docela dlouho. Tento kód bude s minimálními
úpravami funkční ve všech verzích Indy 10, o Indy 9 si nejsem úplně jistý.
Pro jistotu doporučuji používat nejnovější verzi Indy 10
(na stránkách indy.fulgan.com/ZIP/ si stáhněte balík Indy10_xxxx.zip, a případně
návod instalace Indy
a pozor! Je nutné odstranit všechny staré soubory v adresáři nainstalovaných Delphi.
Indy podporují také SSL. Ve starších verzí bylo zapotřebí používat upravené
knihovny OpenSSL. V Indy 10 lze používat standardní sestavení (dostupné na http://indy.fulgan.com/SSL/).
Tyto knihovny je pak nutné nahrát nejlépe do složky s programem a přidat požadované
náležitosti do kódu.
Zde je výsledný kód, který umožní přes SMTP odeslat HTML e-mail s alternativní částí
s prostým textem.
1uses
2
3 IdSMTP, IdMessage, IdMessageBuilder,
4
5
6 IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack,
7 IdSSL, IdSSLOpenSSL, IdExplicitTLSClientServerBase;
8
9…….
10
11var
12 smtp: TIdSMTP;
13 mess: TIdMessage;
14begin
15 smtp:=TIdSMTP.Create(nil);
16 mess:=TIdMessage.Create(nil);
17 try
18
19 mess.Clear;
20
21
22 mess.From.Address := 'odesilatel@ja.cz';
23 mess.From.Name := 'ode me';
24
25
26 with mess.Recipients.Add do begin
27 Address := 'prijemce@on.cz';
28 Name := 'prijemce';
29 end;
30
31
32 with mess.ReplyTo.Add do begin
33 Address := 'poslat@jinam.cz';
34 Name := '…';
35 end;
36
37
38 mess.Subject := 'nazev';
39
40
41
42
43
44 with TIdMessageBuilderHtml.Create do
45 try
46
47 PlainTextCharSet:='utf-8';
48 PlainText.Text:='normalni text +ěščřžýáíé';
49
50
51 HtmlCharSet:='utf-8';
52 Html.Text:='<html><body><b>HTML text +ěščřžýáíé</b></body></html>';
53
54
55
56
57
58 FillMessage(mess);
59 finally
60 Free;
61 end;
62
63 mess.Encoding:=meMIME;
64
65 smtp.MailAgent := 'agent';
66
67 smtp.Host := 'smtp.server.cz';
68 smtp.Port := 25;
69 smtp.Username := '';
70 smtp.Password := '';
71
72
73
74
75
76
77 smtp.Connect;
78
79 smtp.Send(mess);
80
81 smtp.Disconnect;
82 finally
83 mess.Free;
84 smtp.Free;
85 end;
86end;