13. Komponenty NetMasters III

V tΘto kapitole je dokonΦen popis komponent NetMasters. Jsou zde popsßny:


Jednotka NMPop3

Jednotka obsahuje komponentu TNMPOP3, svßzanΘ t°φdy a typ TListEvent. Jsou zde definovßny t°φdy:

T°φda TMailMessage

T°φda definuje strukturu pou╛itou pro uklßdßnφ zprßv e-mail zφskan²ch od vzdßlenΘho hostitele. TNMPOP3 obsahuje instanci TMailMessage jako vlastnost, nazvanou MailMessage do kterΘ je ulo╛ena souΦasn∞ p°ijatß e-mail zprßva.
T°φda mß nßsledujφcφ vlastnosti:
 
property Attachments: TStringList; Vlastnost obsahuje seznam °et∞zc∙ jmen soubor∙ p°ipojen²ch k souΦasnΘ zprßv∞. Runtime, Read-only
property Body: TStringList; Vlastnost obsahuje t∞lo souΦasnΘ mail zprßvy. Runtime, Read-only
property From: string; Vlastnost obsahuje e-mail adresu odesilatele souΦasnΘ mail zprßvy. Runtime, Read-only
property Head: TExStringList; Vlastnost obsahuje hlaviΦku souΦasnΘ mail zprßvy Runtime, Read-only
property MessageId: string; Vlastnost obsahuje identifikaci zprßvy p°i°azenou k souΦasnΘ mail zprßv∞ mail serverem. Runtime only
property Subject: string; Vlastnost obsahuje °ßdek Subject souΦasnΘ mail zprßvy. Runtime, Read-only

T°φda TSummary

T°φda definuje strukturu, do kterΘ jsou ulo╛eny souhrnnΘ informace o zprßv∞ e-mail. Komponenta TNMPOP3 obsahuje instanci TSummary jako vlastnost, nazvanou Summary, kterß obsahuje souhrnnΘ informace o prßv∞ p°ijatΘ zprßv∞.
T°φda mß vlastnosti:
 
property Bytes: integer; Vlastnost obsahuje poΦet slabik v souΦasnΘ e-mail zprßv∞.
property From: string; Vlastnost obsahuje e-mail adresu odesilatele zprßvy.
property Header: TExStringList; Vlastnost obsahuje hlaviΦku pro souΦasnou e-mail zprßvu.
property MessageId: string; Vlastnost obsahuje identifikaci zprßvy p°i°azenou mail serverem ke zprßv∞.
property Subject: string; Vlastnost obsahuje °ßdek Subject pro souΦasnou e-mail zprßvu.

Typ TListEvent

TListEvent = procedure(Msg, Size: integer) of object;
Typ je pou╛φvßn pro udßlost OnList. P°ebφrß dva celoΦφselnΘ parametry. Parametr Msg specifikuje Φφslo uvßd∞nΘ zprßvy a parametr Size specifikuje velikost tΘto zprßvy.

Komponenta TNMPOP3

Komponenta se pou╛φvß pro zφskßvßnφ e-mail ze serveru POP3. Komponenta vy╛aduje WSOCK32.DLL. D°φve ne╛ m∙╛eme pou╛φt komponentu TNMPOP3 pro p°φjem e-mail, musφ b²t z°φzeno p°ipojenφ na e-mail server. To provedeme nastavenφm vlastnosti Host na mail server, kde mßme z°φzen ·Φet a nastavenφm vlastnostφ UserID a Password na identifikaci a heslo p°φpustnΘho ·Φtu e-mail na tomto serveru. P°ipojenφ k serveru je provedeno volßnφm Connect.
Volßnφm GetMailMessage e-mail m∙╛e b²t zφskßn z mail serveru. R∙znΘ Φßsti zprßvy jsou ulo╛eny do vlastnosti MailMessage.
Komponenta mß vlastnosti:
 
property AttachFilePath: string; Vlastnost specifikuje adresß° k uklßdßnφ libovoln²ch soubor∙ p°ipojen²ch ke zprßv∞. Implicitn∞ jsou uklßdßny do adresß°e aplikace. Pokud specifikovan² adresß° neexistuje, pak soubory jsou uklßdßny do souΦasnΘho adresß°e. Published Runtime, Designtime
property DeleteOnRead: boolean; Vlastnost urΦuje, zda po p°eΦtenφ zprßvu zru╣it. Pokud mß hodnotu true, pak po zφskßnφ zprßvy metodou GetMailMessage jsou zprßvy ru╣eny. P°i false (implicitnφ hodnota), zprßvy z∙stavajφ na serveru. Metoda Reset ru╣φ v╣echny p°φznaky ru╣enφ a tedy zprßvy zru╣enΘ DeleteOnRead nebo DeleteMailMessage v pr∙b∞hu souΦasnΘho sezenφ jsou obnoveny. Published Run time, Design Time
property MailCount: integer; Vlastnost obsahuje poΦet zprßv na serveru pro danΘho u╛ivatele. Hodnota je nastavena po p°ipojenφ na server. Public Run time
property MailMessage: TMailMessage; Vlastnost je nastavena volßnφm GetMailMessage. Obsahuje data, tvo°φcφ zφskanou e-mail zprßvu. Informace je nutno zpracovat p°ed dal╣φm volßnφm GetMailMessage Public Runtime, Read-Only
property Password: string; Vlastnost specifikuje heslo po╛adovanΘ metodou Connect pro p°ipojenφ na mail server. Heslo musφ odpovφdat identifikaci u╛ivatele specifikovanΘho ve vlastnosti UserID. Pokud heslo je chybnΘ, pak vznikß udßlost OnAutenticationFailed. Jestli╛e heslo nenφ zadßno vznikß OnAutenticationNeeded. Published RunTime, DesignTime
property Summary: TSummary; Vlastnost obsahuje souhrnnΘ informace o e-mail zprßv∞. K zφskßnφ celΘ e-mail zprßvy volßme metodu GetMailMessage. Tato vlastnost je nastavena po volßnφ GetSummary a obsahuje souhrnnΘ informace z poslednφho ·sp∞╣nΘho zφskßnφ souhrnnΘ zprßvy.  Informace je nutno zpracovat p°ed dal╣φm volßnφm GetSummary. Public RunTime, ReadOnly
property UserID: string; Vlastnost specifikuje identifikaci u╛ivatele po╛adovanou metodou Connect pro p°ipojenφ na mail server. Pokud u╛ivatel nemß ·Φet na specifikovanΘm mail serveru (nebo je chybnΘ heslo), pak vznikß udßlost OnAutenticationFailed. Pokud u╛ivatel nenφ specifikovßn vznikß udßlost OnAuthenticationNeeded. Published RunTime, DesignTime

Komponenta mß nßsledujφcφ metody:

function UniqueID(MailNumber: integer): string;
Metoda vracφ identifikaci zprßvy pro zprßvu specifikovanou parametrem (Φφslo zprßvy; m∙╛e nab²vat hodnot od 1 do hodnoty MailCount).

procedure DeleteMailMessage(MailNumber: integer);
Metoda ru╣φ zprßvu na mail serveru specifikovanou parametrem (Φφslo zprßvy). V p°φpad∞ ·sp∞chu vznikß OnSuccess a v p°φpad∞ ne·sp∞chu OnFailure. Zru╣enΘ zprßvy nejsou skuteΦn∞ zru╣eny do odpojenφ. Metodou Reset obnovφme v╣echny zru╣enΘ zprßvy v pr∙b∞hu souΦasnΘho sezenφ.

procedure GetMailMessage(MailNumber: integer);
Metoda zφskßvß mail zprßvu urΦenou parametrem (Φφslo zprßvy) a uklßdß jejφ data do vlastnosti MailMessage. Pokud nastane chyba, pak je generovßna v²jimka. Pokud nenφ z°φzeno p°ipojenφ, pak nastßvß OnConnectionRequired. P°i zahßjenφ zφskßvßnφ zprßvy vznikß udßlost OnRetrieveStart a p°i dokonΦenφ zφskßvßnφ udßlost OnRetrieveEnd. Jestli╛e zprßva je zφskßna ·sp∞╣n∞, pak vznikß OnSuccess. Kdy╛ DeleteOnRead je nastaveno na true, pak volßnφ GetMailMessage takΘ oznaΦuje zφskanou zprßvu jako zru╣enou.

procedure GetSummary(MailNumber: integer);
Metoda zφskßvß souhrn zprßvy pro zprßvu specifikovanou parametrem (Φφslo zprßvy) a uklßdß souhrn do vlastnosti Summary. Pokud nastane chyba, pak je generovßna v²jimka. Pokud nenφ z°φzeno p°ipojenφ, pak nastßvß OnConnectionRequired. P°i zahßjenφ zφskßvßnφ souhrnu zprßvy vznikß udßlost OnRetrieveStart a p°i dokonΦenφ zφskßvßnφ udßlost OnRetrieveEnd. Jestli╛e souhrn zprßvy je zφskßn ·sp∞╣n∞, pak vznikß OnSuccess.

procedure List;
Metoda zφskßvß seznam Φφsel zprßv a jejich velikosti. Pro ka╛dou zprßvu v seznamu vznikß udßlost OnList (Φφslo zprßvy a velikost jsou p°edßny jako parametry). Pokud nastane chyba, pak je generovßna v²jimka. Pokud nenφ z°φzeno p°ipojenφ, pak nastßvß OnConnectionRequired.

procedure Reset;
Metoda odvolßvß zru╣enφ v╣ech zprßv oznaΦen²ch k zru╣enφ metodou DeleteMailMessage nebo metodou GetMailMessage s DeleteOnRead nastaven²m na true v pr∙b∞hu souΦasnΘho sezenφ. P°i chyb∞ je generovßna v²jimka. Pokud nenφ z°φzeno p°ipojenφ, pak nastßvß OnConnectionRequired. V p°φpad∞ ·sp∞chu vznikß udßlost OnReset.

Komponenta mß nßsledujφcφ udßlosti:

property OnAuthenticationFailed: THandlerEvent;
Udßlost nastßvß, kdy╛ POP3 server vy╛aduje identifikaci u╛ivatele a heslo a je poskytnuta chybnß dvojice t∞chto informacφ. Pokud Handled je nastaveno na true, pak pokus o p°ipojenφ je zopakovßn. Je-li Handled nastaveno na false, pak je generovßna v²jimka a p°ipojenφ je zru╣eno.

property OnAuthenticationNeeded: THandlerEvent;
Udßlost nastßvß, kdy╛ je po╛adovßna identifikace u╛ivatele a heslo a n∞co z toho nenφ poskytnuto. Pokud Handled je nastaveno na true, pak pokus o p°ipojenφ je zopakovßn. Je-li Handled nastaveno na false, pak je generovßna v²jimka.

property OnFailure: TNotifyEvent;
Udßlost vznikß p°i ne·sp∞chu operace (zru╣enφ mail zprßvy nebo zφskßvßnφ identifikace zprßvy).

property OnList: TListEvent;
Udßlost nastßvß s p°edßvßnφm velikosti a Φφsla zprßvy pro ka╛dou zprßvu p°i volßnφ metody List. Parametr Msg je identifikace zprßvy, kterou p°edßvßme metodßm typu GetMailMessage nebo DeleteMailMessage. Parametr Size je velikost zprßvy ve slabikßch.

property OnReset: TNotifyEvent;
Udßlost nastßvß po ·sp∞╣nΘm volßnφ metody Reset. Tato udßlost oznamuje, ╛e v╣echny zprßvy oznaΦenΘ jako zru╣enΘ, ji╛ takto oznaΦeny nejsou.

property OnRetrieveEnd: TNotifyEvent;
Udßlost nastßvß, kdy╛ mail zprßva nebo sumß° zprßvy je kompletn∞ zφskßn.

property OnRetrieveStart: TNotifyEvent;
Udßlost nastßvß, kdy╛ je zahßjeno zφskßvßnφ zprßvy.

property OnSuccess: TNotifyEvent;
Udßlost nastßvß, kdy╛ zprßva je ·sp∞╣n∞ oznaΦena jako zru╣enß, metodou DeleteMailMessage.


Jednotka NMSmtp

Jednotka obsahuje komponentu TNMSMTP s svßzanΘ t°φdy a typy. Je zde t°φda TPostMessage a typy:

T°φda TPostMessage

T°φda pro ulo╛enφ odchßzejφcφch e-mail zprßv. TNMSMTP obsahuje instanci TPostMessage jako vlastnost PostMessage.
T°φda mß nßsledujφcφ vlastnosti:
 
property Attachments: TStringList; Vlastnost specifikuje seznam soubor∙ p°ipojen²ch k odchßzejφcφ e-mail zprßv∞. Je povoleno pouze jedno jmΘno souboru na °ßdku.
property Body: TStringlist; Vlastnost obsahuje t∞lo zprßvy urΦenΘ k odeslßnφ.
property Date: string; Vlastnost specifikuje datum odeslßnφ e-mail. Pokud je vlastnost prßzdnß, pak je napln∞na souΦasn²m datumem.
property FromAddress: string; Vlastnost specifikuje e-mail adresu odesilatele zprßvy.
property FromName: string; Vlastnost specifikuje jmΘno odesilatele e-mail zprßvy.
property LocalProgram: string; Vlastnost specifikuje jmΘno aplikace odesφlajφcφ e-mail. Je ulo╛eno v Φßsti X-Mailer hlaviΦky.
property ReplyTo: string; Vlastnost specifikuje e-mail adresy, kterΘ budou po╛ity p°i odpovφdßnφ na zprßvu.
property Subject: string; Vlastnost obsahuje subjekt odesφlanΘ e-mail zprßvy.
property ToAddress: TStringlist; Vlastnost specifikuje adresßty e-mail zprßvy. M∙╛e b²t pouze jedna e-mail adresa na °ßdku.
property ToBlindCarbonCopy: TStringlist; Vlastnost specifikuje adresßty zprßvy jim╛ je zprßva zasφlßna neoΦekßvan∞ pouze na v∞domφ. M∙╛e b²t pouze jedna e-mail adresa na °ßdku.
property ToCarbonCopy: TStringlist; Vlastnost specifikuje adresßty zprßvy jim╛ je zprßva zasφlßna pouze na v∞domφ. M∙╛e b²t pouze jedna e-mail adresa na °ßdku.

Typ TFileItem

TFileItem = procedure(Filename: string) of object;
Typ je pou╛it v p°φpad∞, kdy seznam soubor∙ mß b²t p°edßn jako parametr udßlosti.

Typ THeaderInComplete

THeaderInComplete = procedure(var handled: boolean; hiType: integer) of object;
Udßlost tohoto typu je volßna, kdy╛ chybφ prvek hlaviΦky.

Typ TMailListReturn

TMailListReturn = procedure(MailAddress: string) of object;
Typ je pou╛φvßn, kdy╛ udßlost po╛aduje e-mail adresy jako parametr.

Typ TRecipientNotFound

TRecipientNotFound = procedure(Recipient: string) of object;
Typ je pou╛φvßn, kdy╛ udßlosti je p°edßvßna e-mail adresa jako parametr, kdy╛ adresßt nenφ nalezen.

Typ TSubType

TSubType = (mtPlain, mtEnriched, mtSgml, mtTabSeperated, mtHtml);
Typ je pou╛φvßn pro specifikaci sub-typu pro e-mail dokument. Mo╛nΘ hodnoty jsou:

Komponenta TNMSMTP

Komponenta umo╛≥uje zasφlßnφ e-mail prost°ednictvφm InternetovskΘho mail serveru a implementuje dal╣φ p°φkazy specifikovanΘ RFC 821. Komponenta vy╛aduje WSOCK32.DLL. Mail server pro p°ipojenφ je definovßn vlastnostmi Host a Port. P°ipojenφ je z°φzeno volßnφm metody Connect a zru╣eno volßnφm metody Disconnect. Vlastnost PostMessage obsahuje data tvo°φcφ e-mail zprßvu, kterß bude odeslßna volßnφm metody SendMail. Existence u╛ivatele na p°ipojenΘm hostiteli m∙╛e b²t zji╣╗ovßna pou╛itφm metody Verify. Slo╛ky po╣tovnφho seznamu mohou b²t urΦeny pomocφ metody ExpandList a zßpisem obsluhy udßlosti pro OnMailListReturn.
Komponenta mß nßsledujφcφ vlastnosti:
 
property ClearParams: boolean; Vlastnost specifikuje zda polo╛ky vlastnosti PostMessage budou vyprßzdn∞ny po odeslßnφ zprßvy (true - implicitn∞) nebo ne (false).  Published Runtime, Designtime
property EncodeType: UUMethods; Vlastnost specifikuje jak² typ k≤dovßnφ TNMSMTP bude pou╛it ke k≤dovßnφ soubor∙ p°ipojen²ch k e-mail zprßv∞. Jsou mo╛nΘ pouze dv∞ volby: uuMime (implicitn∞), kterΘ pou╛φvß k≤dovßnφ MIME base 64 a uuCode, kterΘ pou╛φvß k≤dovßnφ UUEncode. Published Runtime, Designtime
property FinalHeader: TExStringList; Vlastnost reprezentuje hlaviΦku, kterß je aktußln∞ odesφlßna s t∞lem e-mail zprßvy. Tato vlastnost m∙╛e b²t prohlφ╛ena a modifikovßna v obsluze udßlosti OnSendStart. Public Runtime
property PostMessage: TPostMessage; Vlastnost obsahuje zprßvu, kterß je odesφlßna. Pokud ClearParams je true, pak kdy╛ metoda SendMail kompletuje zprßvu, obsah vlastnosti PostMessage je vyprazd≥ovßn. Published Runtime, Designtime
property UserID: string; Vlastnost specifikuje identifikaci u╛ivatele pro p°ihlß╣enφ k hostiteli SMTP. Nenφ nutnΘ pro p°ihlß╣enφ ke v╣em server∙m SMTP, ale v∞t╣ina server∙ neumo╛nφ odesφlßnφ zprßv bez p°φpustnΘ identifikace u╛ivatele. Pokud identifikace je po╛adovßna a nenφ dodßna vznikß OnAutenticationFailed. Published Runtime, Designtime

Komponenta mß nßsledujφcφ metody:

function ExpandList(MailList: string): boolean;
Metoda je pou╛φvßna k zφskßnφ Φlen∙ po╣tovnφho seznamu na SMTP serveru. Parametr specifikuje seznam k zφskßnφ jmen nebo adres. Kdy╛ adresy jsou vrßceny z hostitele SMTP, pak vznikß udßlost OnMailListReturn.

function ExtractAddress(TotalAddress: string): string;
Metoda extrahuje e-mail adresu z °et∞zce. Je obvykle pou╛φvßna v internφm zpracovßnφ, ale je ve°ejnß a m∙╛e b²t pou╛φvßna kdekoliv. Parametr specifikuje rozklßdan² °et∞zec. Tato funkce p°ebφrß °et∞zec formßtovan² nßsledujφcφm zp∙sobem:
Persons Name <email@host.ext>
Persons Name:email@host.ext
Metoda nevy╛aduje p°ipojenφ na hostitele SMTP.

function Verify(UserName: string): boolean;
Metoda se pou╛φvß k ov∞°enφ existence u╛ivatele na hostiteli SMTP. Parametr specifikuje u╛ivatele k ov∞°enφ. N∞kterΘ hostitelΘ po╛adujφ pouze jmΘno u╛ivatele (jmΘno p°ed @ v adrese), zatφmco n∞kte°φ jinφ hostitelΘ po╛adujφ celou adresu k ov∞°enφ. Pokud u╛ivatel je nalezen, pak je vrßceno true, jinak je vraceno false.

procedure ClearParameters;
Metoda vyprazd≥uje obsah vlastnosti PostMessage. Polo╛ky ToAddress, ToCarbonCopy, ToBlindCarbonCopy a Attachments jsou vyprßzdn∞ny. K vyprßzdn∞nφ polo╛ky Body volßme PostMessage->Body->Clear(). Metoda je volßna automaticky po ka╛dΘm volßnφ SendMail, pokud vlastnost ClearParams je nastavena na true.

procedure SendMail;
Metoda odesφlß e-mail zprßvu definovanou vlastnostφ PostMessage. Pokud ClearParams je nastavena na true, pak p°i odeslßnφ zprßvy je volßna metoda ClearParameters. Bezprost°edn∞ p°ed odeslßnφm zprßvy vznikß OnSendStart. Jestli╛e zprßva je ·sp∞╣n∞ odeslßna, pak vznikß OnSuccess a p°i ne·sp∞chu vznikß OnFailureEvent.

Komponenta mß tyto udßlosti:

property OnAuthenticationFailed: THandlerEvent;
Udßlost nastßvß p°i pokusu klienta p°ipojit se ke vzdßlenΘmu hostiteli p°i zadßnφ chybnΘ identifikace nebo chybnΘho hesla. Pokud parametr Handled je nastaven na true, pak je zopakovßn pokus o autentizaci. Jestli╛e tento druh² pokus je stßle ne·sp∞╣n², pak je generovßna v²jimka. Pokud Handled je nastaven na false (implicitn∞), pak je generovßna v²jimka a p°ipojenφ je ne·sp∞╣nΘ.

property OnFailure: TNotifyEvent;
Udßlost nastßvß, kdy╛ odchßzejφcφ e-mail zprßva nenφ odeslßna ·sp∞╣n∞.

property OnSendStart: TNotifyEvent;
Udßlost nastßvß bezprost°edn∞ p°ed odeslßnφm e-mail zprßvy. Je to poslednφ mo╛nost modifikovat odchßzejφcφ zprßvu.

property OnSuccess: TNotifyEvent;
Udßlost nastßvß p°i ·sp∞╣nΘm odeslßnφ e-mail zprßvy.

property OnAttachmentNotFound: TFileItem;
Udßlost nastßvß, kdy╛ soubor p°ipojen² k odchßzejφcφ e-mail zprßv∞ nenφ nalezen. Parametr TFileItem m∙╛e identifikovat chyb∞jφcφ soubor.

property OnEncodeEnd: TFileItem;
Udßlost nastßvß, kdy╛ soubor p°ipojen² k odchßzejφcφ e-mail zprßv∞ je kompletn∞ zak≤dovßn pro p°enos. Parametr TFileItem urΦuje jmΘno prßv∞ zak≤dovanΘho souboru.

property OnEncodeStart: TFileItem;
Udßlost nastßvß, kdy╛ p°ipojen² soubor bude k≤dovßn pro p°enos. Parametr TFileItem urΦuje jmΘno prßv∞ k≤dovanΘho souboru.

property OnHeaderIncomplete: THeaderInComplete;
Udßlost nastßvß, kdy╛ n∞kterß z nßsledujφcφch vlastnostφ PostMessage je prßzdnß:

Mimo parametru Handled, je takΘ p°edßvßn parametr hiType. Specifikuje, kterß Φßst hlaviΦky chybφ. Mo╛nΘ hodnoty jsou: Pokud Handled je nastaveno na true, pak pokus o odeslßnφ je zopakovßn, pokud ·daj nenφ stßle zadßn, pak je generovßna v²jimka. Kdy╛ Handled je false, pak zprßva nenφ odesφlßna a je generovßna v²jimka.

property OnMailListReturn: TMailListReturn;
Udßlost nastßvß, kdy╛ metoda ExpandList zφskßvß e-mail addresy. Adresy jsou p°edßny jako parametr.

property OnRecipientNotFound: TRecipientNotFound;
Udßlost nastßvß, kdy╛ n∞kter² z adresßt∙ specifikovan²ch ve vlastnosti PostMessage (ToAddress, ToCarbonCopy nebo ToBlindCarbonCopy) nenφ nalezen. Nenalezenß adresa je p°edßna jako parametr.


Komponenta TNMUUProcessor

Komponenta zak≤dovßvß soubory pro p°enos po Internetu nebo Intranetu a dek≤duje je do jejich p∙vodnφho tvaru. Komponenta je odvozena od TComponent. Nastavφme vlastnost InputFile na zpracovßvan² soubor, vlastnost Method urΦuje styl k≤dovßnφ a vlastnost OutputFile v²sledn² soubor. Potom volßnφm metody Encode nebo Decode provedeme zak≤dovßnφ nebo dek≤dovßnφ souboru.
Komponenta mß nßsledujφcφ vlastnosti:
 
property InputStream: TStream; Vlastnost specifikuje k≤dovan² nebo dek≤dovan² proud. Musφ b²t nastavena d°φve ne╛ volßme metodu Encode nebo Decode. Published RunTime
property Method: UUMethods; Vlastnost urΦuje pou╛itou metodu k≤dovßnφ. Mo╛nΘ hodnoty jsou uuMime (implicitn∞) a uuCode Published DesignTime, RunTime
property OutputStream: TFileStream; Vlastnost specifikuje proud pro ulo╛enφ v²slednΘho souboru. Musφ b²t nastavena d°φve ne╛ volßme metodu Encode nebo Decode. Published RunTime

Komponenta mß nßsledujφcφ metody:

procedure Decode;
Metoda dek≤duje proud dat specifikovan² vlastnostφ InputStream, pomocφ metody urΦenΘ vlastnostφ Method a uklßdß data do proudu specifikovanΘho vlastnostφ OutputStream.

procedure Encode;
Metoda k≤duje proud dat specifikovan² vlastnostφ InputStream, pomocφ metody urΦenΘ vlastnostφ Method a uklßdß data do proudu specifikovanΘho vlastnostφ OutputStream.

Komponenta mß udßlosti:

procedure OnBeginDecode: TNotifyEvent;
Udßlost nastßvß p°i zahßjenφ dek≤dovßnφ.

procedure OnBeginEncode: TNotifyEvent;
Udßlost nastßvß p°i zahßjenφ k≤dovßnφ.

procedure OnEndDecode: TNotifyEvent;
Udßlost nastßvß p°i dokonΦenφ dekodovßnφ.

procedure OnEndEncode: TNotifyEvent;
Udßlost nastßvß p°i dokonΦenφ k≤dovßnφ.


Jednotka NMSTRM

Jednotka obsahuje komponentu TNMStrm pro odesφlßnφ proud∙ po Internetu a komponentu TNMStrmServ pro p°φjem t∞chto proud∙.
Hlavnφm v²znamem komponent v tΘto jednotce je poskytnout p°φklad, kter² m∙╛eme pou╛φt jako zßklad pro °e╣enφ v²vojov²ch problΘm∙ se zßkaznick²mi protokoly Internetu. Mimo t∞chto dvou komponent je zde definovßn i typ TStrmEvent.

Typ TStrmEvent

TStrmEvent = procedure(Sender: TComponent; const sFrom: string;
      strm: Tstream) of object;
Typ udßlosti pou╛itΘ pro zachycovßnφ p°ichßzejφcφch proud∙. Parametr sFrom specifikuje jmΘno odesilatele proudu a parametr strm je proud odeslan² u╛ivatelem.

Komponenta TNMStrm

Komponenta je pou╛φvßna pro odesφlßnφ proud∙ na proudov² server prost°ednictvφm Internetu. Musφ b²t pou╛ita v pßru s komponentou TNMStrmServ k poskytnutφ obousm∞rnΘ komunikace. Vy╛aduje pou╛itφ WSOCK32.DLL.
D°φve ne╛ m∙╛eme odeslat proud, musφme nastavit vlastnost Host na vzdßlenΘho hostitele, kterΘmu chceme odeslat proud. Musφme takΘ nastavit vlastnost Port na odpovφdajφcφ port na vzdßlenΘm hostiteli. Nastavφme vlastnost FromName, aby p°φjemce proudu v∞d∞l od koho proud pochßzφ. Po nastavenφ t∞chto vlastnostφ m∙╛eme proud odeslat volßnφm metody PostIt.
Komponenta mß vlastnost
 
property FromName: string; Vlastnost specifikuje jmΘno odesilatele odchßzejφcφho proudu. Tato hodnota je pou╛ita serverem, aby v∞d∞l od koho data pochßzejφ. Published Runtime, designtime

metodu

function PostIt(const sStrm: TStream): string;
kterß odesφlß proud urΦen² parametrem na vzdßlenΘho hostitele specifikovanΘho vlastnostφ Host. Parametr je TStream (nebo jeho potomek), kter² obsahuje odesφlanß data. Vrßcenß hodnota je odpov∞∩ OK od serveru, pokud proud byl p°ijat sprßvn∞. Metoda zpracovßvß v╣echna p°ipojenφ/odpojenφ na vzdßlenΘho hostitele. Kdy╛ zprßva byla odeslßna, pak nastßvß udßlost OnMessageSent.

a udßlost

property OnMessageSent: TNotifyEvent;
Udßlost vznikß, kdy╛ metoda PostIt byla provedena ·sp∞╣n∞.

Komponenta TNMStrmServ

Komponenta je pou╛φvßna pro p°φjem proud∙ odeslan²ch komponentou TNMStrm. Pou╛itφ komponenty vy╛aduje WSOCK32.DLL. V pr∙b∞hu nßvrhu na╣φ aplikace nastavφme vlastnost Port v Inspektoru objekt∙ na port kde server bude naslouchat, pokud nechceme pou╛φt implicitnφ hodnotu. Pro p°φjem a zpracovßnφ zprßvy zapφ╣eme obsluhu udßlosti OnMSG.
Komponenta mß udßlost:

property OnMSG: TStrmEvent;
Udßlost nastßvß, kdy╛ proud je p°ijat. Parametr sFrom specifikuje jmΘno odesilatele proudu a parametr strm je p°ijat² proud. Data z proudu v parametru strm musφme p°eΦφst p°ed ukonΦenφm udßlosti, jinak jsou ztracena.


Jednotka NMUDP

Jednotka obsahuje komponentu TNMUDP a pot°ebnΘ typy. Jednß se o typy:

Typ TBuffInvalid

TBuffInvalid = procedure(var handled: boolean; var Buff: array of char;
               var length: integer) of object;
Typ je pou╛φvßn udßlostφ OnBufferInvalid.

Typ THandlerEvent

THandlerEvent = procedure(var handled: boolean) of object;
Typ je pou╛φvßn pro udßlosti, kterΘ majφ mo╛nost volit p°episovßnφ implicitnφho chovßnφ komponenty. Obvykle parametr handled je false, kdy╛ je provßd∞na implicitnφ akce komponenty. P°i nastavenφ na true, implicitnφ akce komponenty je p°epsßna.

Typ TOnErrorEvent

TOnErrorEvent = procedure(Sender: TComponent; errno: word; Errmsg: string) of object;
Typ pou╛φvan² udßlostφ oznamujφcφ chybu.

Typ TOnReceive

TOnReceive = procedure(Sender: TComponent; NumberBytes: Integer;
             FromIP: string; Port: integer) of object;
Typ pou╛φvan² pro zpracovßnφ p°ichßzejφcφch dat v komponent∞ TNMUDP.

Typ TOnStatus

TOnStatus = procedure(Sender: TComponent; status: string) of object;
Typ udßlosti pro udßlosti, kterΘ oznamujφ stavovΘ zprßvy.

Typ TStreamInvalid

TStreamInvalid = procedure(var handled: boolean; Stream: TStream) of object;
Typ je modifikacφ typu udßlosti THandler, pro obslou╛enφ chybn²ch proud∙. Pokud parametr handled je false (implicitnφ hodnota), pak je provedena implicitnφ akce komponenty. P°i hodnot∞ true implicitnφ akce komponenty je ignorovßna.

Komponenta TNMUDP

Komponenta je pou╛φvßna pro implementaci UDP (User Datagram Protocol) pro zasφlßnφ paket∙ datagram∙ prost°ednictvφm Internetu podle RFC 768.
P°ed odeslßnφm paket∙ datagram∙ pomocφ UDP, musφme znßt vzdßlenΘho hostitele a vzdßlen² port na kter² budeme zasφlat data. VzdßlenΘho hostitele p°i°adφme vlastnosti RemoteHost a vzdßlen² port vlastnosti RemotePort. K odeslßnφ dat na vzdßlenΘho hostitele m∙╛eme pou╛φt metodu SendBuffer (pole znak∙) nebo SendStream (proud dat).
D°φve ne╛ m∙╛eme p°ijφmat UDP data, musφme nastavit vlastnost LocalPort. Tato vlastnost musφ b²t nastavena p°i nßvrhu a nesmφ b²t m∞n∞na za b∞hu. Kdy╛ data UDP jsou dostupnß pro Φtenφ, vznikß udßlost OnDataAvailable. V tΘto udßlosti pro Φtenφ dat pou╛ijeme metodu ReadBuffer (Φtenφ dat do pole) nebo ReadStream (Φtenφ dat do proudu).
Komponenta mß nßsledujφcφ vlastnosti:
 
property LocalPort: integer; Vlastnost specifikuje Φφslo portu k naslouchßnφ zasφlan²m paket∙m datagramu. Tato vlastnost m∙╛e b²t nastavena na 0, pokud ji╛ p°ijφmßme UDP data. Published Runtime*, design-time
property RemoteHost: string; Vlastnost specifikuje teΦkovou IP adresu nebo jmΘno hostitele vzdßlenΘho poΦφtaΦe, kter² je cφlem metod SendBuffer a SendStream. Published Runtime, design-time
property RemotePort: integer; Vlastnost specifikuje port na vzdßlenΘm hostiteli k zasφlßnφ dat pomocφ metod SendBuffer a SendStream. Published Runtime, design-time
property ReportLevel: integer; Vlastnost urΦuje ·rove≥ podrobnosti stavov²ch zprßv oznamovan²ch udßlostφ OnStatus. Mo╛nΘ hodnoty jsou: Status_None, Status_Informational (implicitnφ), Status_Basic, Status_Routines, Status_Debug, Status_Trace.  Published Runtime, design-time

*Tato vlastnost m∙╛e b²t nastavovßna pouze b∞hem nßvrhu. Pokud komponenta je vytvß°ena dynamicky v na╣em k≤du (pomocφ metody Create), pak vlastnost LocalPort musφ b²t nastavena zde.

Komponenta mß nßsledujφcφ metody:

constructor Create(AOwner: TComponent); override;
Metoda alokuje pam∞╗ a vytvß°φ bezpeΦnou instanci komponenty TNMUDP.

destructor Destroy; override;
Ve svΘ aplikaci nevolßme metodu Destroy, musφme volat Free. Metoda Destroy uvol≥uje komponentu TNMUDP a jφ vlastn∞nΘ komponeny.

procedure ReadBuffer(var Buff: array of char; var length: integer);
Metoda Φte p°ichßzejφcφ UDP data do vyrovnßvacφ pam∞ti specifikovanΘ prvnφm parametrem. Druh² parametr urΦuje velikost vyrovnßvacφ pam∞ti.

procedure ReadStream(DataStream: TStream);
Metoda je pou╛φvßna pro Φtenφ UDP dat p°ijat²ch ze vzdßlenΘho poΦφtaΦe do proudu urΦenΘho parametrem (TStream nebo jeho potomek).

procedure SendBuffer(Buff: array of char; length: integer);
Metoda je urΦena pro odeslßnφ pole znak∙ na vzdßlenΘho hostitele. Znaky jsou ulo╛eny v poli urΦenΘm prvnφm parametrem a jejich poΦet je urΦen druh²m parametrem. Pokud pole neobsahuje data vznikß OnBufferInvalid.

procedure SendStream(DataStream: TStream);
Metoda je urΦena k odeslßnφ proudu dat urΦenΘho parametrem (TStream nebo jeho potomek) na vzdßlenΘho hostitele. Pokud proud neobsahuje data vznikß OnStreamInvalid.

Komponenta mß tyto udßlosti:

property OnBufferInvalid: TBuffInvalid;
Udßlost nastßvß, pokud vyrovnßvacφ pam∞╗ odesφlanß metodou SendBuffer neobsahuje data. Parametr Buff je odesφlanß vyrovnßvacφ pam∞╗ a parametr length je velikost vyrovnßvacφ pam∞ti. Tyto parametry mohou b²t v obsluze udßlosti modifikovßny tak, aby urΦovaly p°φpustnou vyrovnßvacφ pam∞╗. Po jejich modifikaci m∙╛eme nastavit parametr handled na true k op∞tovnΘmu pokusu o odeslßnφ dat. Pokud parametr handled je false (implicitn∞), je generovßna v²jimka.

property OnDataReceived: TOnReceive;
Udßlost nastßvß, kdy╛ data jsou p°ijata. Parametr NumberBytes specifikuje poΦet p°ijat²ch slabik, FromIP specifikuje IP adresu odesilatele a Port urΦuje port, kter² odeslal data.

property OnStatus: TOnStatus;
Udßlost vznikß, kdy╛ stav komponenty se zm∞nφ. Parametr status je souΦasn² stav komponenty.

property OnStreamInvalid: TStreamInvalid;
Udßlost nastßvß, pokud proud odeslan² metodou SendStream neobsahuje data. Parametr Stream je proud neobsahujφcφ data. M∙╛eme jej naplnit daty a parametr handled nastavit na true pro op∞tovnΘ odeslßnφ dat. Pokud parametr handled je false (implicitn∞), je generovßna v²jimka.

property OnDataSend: TNotifyEvent;
Udßlost nastßvß, kdy╛ data byla ·sp∞╣n∞ odeslßna (nenφ tφm ale zaji╣t∞no, ╛e data budou p°ijata).

property OnInvalidHost: THandlerEvent;
Udßlost nastßvß, kdy╛ vlastnost RemoteHost je chybnß. Pokud parametr handled je nastaven na true, pak data jsou odeslßna znova. Po druhΘm ne·sp∞chu je generovßna v²jimka. Jestli╛e handled je false pak je generovßna v²jimka.


Komponenta HTML

Komponenta umo╛≥uje vytvß°et prohlφ╛eΦ HTML. Jednß se ji╛ o poslednφ komponentu dodßvanou NetMasters. Tato komponenta je ji╛ pom∞rn∞ zastaralß, pou╛φvß HTML verze 2 a nebudeme se jφ podrobn∞ji zab²vat.

  1. S komponentou TNMPOP3 se seznßmφme v nßsledujφcφ aplikaci. ZaΦneme v²voj novΘ aplikace a na formulß° umφstφme komponenty: 6x TEdit, TMemo, TCheckBox, 2x TButton a TNMPOP3. Komponenty majφ tento v²znam:
  2. Obsluha stisku prvnφho tlaΦφtka je tvo°ena p°φkazy:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      if (NMPOP31->Connected)
        NMPOP31->Disconnect();
      else
        {
          NMPOP31->Host = Edit1->Text;
          NMPOP31->UserID = Edit2->Text;
          NMPOP31->Password = Edit3->Text;
          NMPOP31->DeleteOnRead = CheckBox1->Checked;
          NMPOP31->AttachFilePath = Edit4->Text;
          NMPOP31->Connect();
        }
    }
    Obsluhu udßlosti OnConnect komponenty NMPOP31 tvo°φ (je zji╣t∞n poΦet zprßv):
    void __fastcall TForm1::NMPOP31Connect(TObject *Sender)
    {
      if (NMPOP31->MailCount > 0)
        ShowMessage(IntToStr(NMPOP31->MailCount)+" messages in your mailbox");
      else
        ShowMessage("No messages waiting");
    }
    Obsluhu stisku druhΘho tlaΦφtka tvo°φ:
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
      AnsiString S;
      int M;
      if (NMPOP31->MailCount > 0)
        {
          if (InputQuery("Retrieve an E-Mail message",
            "Which message? (1-"+IntToStr(NMPOP31->MailCount)+")", S))
            {
              M = StrToIntDef(S, -1);
              if ((M < 0) || (M > NMPOP31->MailCount))
                ShowMessage("Invalid message index");
              else
                NMPOP31->GetMailMessage(M);
            }
        }
      else
        ShowMessage("No Messages to Get");
    }
    Aplikace obsahuje je╣t∞ jednu obsluhu udßlosti:
    void __fastcall TForm1::NMPOP31RetrieveEnd(TObject *Sender)
    {
      Memo1->Text = NMPOP31->MailMessage->Body->Text;
      Edit6->Text = NMPOP31->MailMessage->Subject;
      Edit5->Text = NMPOP31->MailMessage->From;
    }
    Po p°ijmu zprßvy jsou jejφ informace zobrazeny. Aplikaci si prostudujte a zjist∞te jak pracuje.
  3. Ji╛ hotovou aplikaci pou╛φvajφcφ komponentu TNMPOP3 nalezneme v adresß°i Program Files\Borland\CBuilder\Examples\Interner\Pop3. ProhlΘdn∞te si tuto aplikaci a sna╛te se pochopit, jak pracuje.
  4. S komponentou TNMSMTP se seznßmφme v nßsledujφcφ aplikaci. ZaΦneme v²voj novΘ aplikace a na formulß° umφstφme 5x TMemo, 8x TEdit, TListBox, 3x TButton, TCheckBox, TNMSMTP, TRadioGroup a TOpenDialog. Komponenty majφ tento v²znam:
  5. Obsluhy stisku tlaΦφtek jsou tvo°eny p°φkazy:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      if (NMSMTP1->Connected)
        NMSMTP1->Disconnect();
      else
        {
          NMSMTP1->Host = Edit1->Text;
          NMSMTP1->UserID = Edit2->Text;
          NMSMTP1->Connect();
        }
    }
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
      if (NMSMTP1->Connected)
        {
          NMSMTP1->ClearParams = CheckBox1->Checked;
          NMSMTP1->SubType = mtPlain;
          switch(RadioGroup1->ItemIndex)
            {
              case 0: NMSMTP1->EncodeType = uuMime;
              case 1: NMSMTP1->EncodeType = uuCode;
            }
          NMSMTP1->PostMessage->FromAddress = Edit4->Text;
          NMSMTP1->PostMessage->FromName = Edit5->Text;
          NMSMTP1->PostMessage->ToAddress->Text = Memo1->Text;
          NMSMTP1->PostMessage->ToCarbonCopy->Text = Memo3->Text;
          NMSMTP1->PostMessage->ToBlindCarbonCopy->Text = Memo2->Text;
          NMSMTP1->PostMessage->Body->Text = Memo4->Text;
          NMSMTP1->PostMessage->Attachments->Text = ListBox1->Items->Text;
          NMSMTP1->PostMessage->Subject = Edit8->Text;
          NMSMTP1->PostMessage->LocalProgram = Edit6->Text;
          NMSMTP1->PostMessage->Date = Edit3->Text;
          NMSMTP1->PostMessage->ReplyTo = Edit7->Text;
          NMSMTP1->SendMail();
        }
      else
        ShowMessage("You need to connect before you can send your message");
    }
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
      NMSMTP1->ClearParameters();
      Edit3->Clear();
      Edit4->Clear();
      Edit5->Clear();
      Edit6->Clear();
      Edit7->Clear();
      Edit8->Clear();
      Memo1->Clear();
      Memo2->Clear();
      Memo3->Clear();
      Memo4->Clear();
      Memo5->Clear();
      ListBox1->Clear();
    }
    Obsluha udßlosti OnKeyDown komponenty ListBox1 je tvo°ena p°φkazy (p°idßvßnφ a ru╣enφ p°i°azen²ch soubor∙):
    void __fastcall TForm1::ListBox1KeyDown(TObject *Sender,
       WORD &Key, TShiftState Shift)
    {
      if (Key == VK_INSERT)
        if (OpenDialog1->Execute())
          ListBox1->Items->Add(OpenDialog1->FileName);
      if (Key == VK_DELETE)
        ListBox1->Items->Delete(ListBox1->ItemIndex);
    }
    Nßsleduje n∞kolik obsluh udßlostφ komponenty TNMSMTP:
    void __fastcall TForm1::NMSMTP1AttachmentNotFound(AnsiString Filename)
    {
      Memo5->Lines->Add("File attachment "+Filename+" not found");
    }
    void __fastcall TForm1::NMSMTP1AuthenticationFailed(bool &Handled)
    {
      AnsiString S;
      S = NMSMTP1->UserID;
      if (InputQuery("Authentication Failed", "Invalid User ID. New User ID: ", S))
        {
          NMSMTP1->UserID = S;
          Handled = TRUE;
        }
    }
    void __fastcall TForm1::NMSMTP1Connect(TObject *Sender)
    {
      Memo5->Lines->Add("Connected");
    }
    void __fastcall TForm1::NMSMTP1SendStart(TObject *Sender)
    {
      Memo5->Lines->Add("Sending Message");
    }
    void __fastcall TForm1::NMSMTP1EncodeStart(AnsiString Filename)
    {
      Memo5->Lines->Add("Encoding "+Filename);
    }
    void __fastcall TForm1::NMSMTP1EncodeEnd(AnsiString Filename)
    {
      Memo5->Lines->Add(Filename+" encoded");
    }
    void __fastcall TForm1::NMSMTP1Failure(TObject *Sender)
    {
      Memo5->Lines->Add("Message delivery failure");
    }
    void __fastcall TForm1::NMSMTP1Success(TObject *Sender)
    {
      Memo5->Lines->Add("Message sent successfully");
    }
    void __fastcall TForm1::NMSMTP1HeaderIncomplete(bool &handled, int hiType)
    {
      AnsiString S;
      switch(hiType)
        {
          case hiFromAddress:
            {
              if(InputQuery("Missing From Address","Enter From Address:",S))
                {
                  NMSMTP1->PostMessage->FromAddress = S;
                  handled = TRUE;
                }
            }
          case hiToAddress:
            {
              if (InputQuery("Missing To Address", "Enter To Address: ", S))
                {
                  NMSMTP1->PostMessage->ToAddress->Text = S;
                  handled = TRUE;
                }
            }
        }
    }
    void __fastcall TForm1::NMSMTP1RecipientNotFound(AnsiString Recipient)
    {
      Memo5->Lines->Add("Recipient "+Recipient+" not found");
    }
    Po spu╣t∞nφ aplikace zadßme po╛adovanΘ informace do editaΦnφch ovladaΦ∙ a ovladaΦ∙ Memo. Pro polo╛ky ToAddress, ToCarbonCopy a TBlindCarbonCopy m∙╛e b²t zadßno vφce adres. Stiskem prvnφho tlaΦφtka se p°ipojφme a stiskem druhΘho tlaΦφtka zprßvu ode╣leme. Druh²m stiskem prvnφho tlaΦφtka se op∞t odpojφme.
  6. Ji╛ hotovou aplikaci pou╛φvajφcφ komponentu TNMSMTP nalezneme v adresß°i Program Files\Borland\CBuilder\Examples\Interner\Smtp. ProhlΘdn∞te si tuto aplikaci a sna╛te se pochopit, jak pracuje.
  7. Ji╛ hotovou aplikaci pou╛φvajφcφ komponentu TNMStrm a komponentu TNMStrmServ nalezneme v adresß°i Program Files\Borland\CBuilder\Examples\Interner\stream. ProhlΘdn∞te si tuto aplikaci a sna╛te se pochopit, jak pracuje.
  8. Ji╛ hotovou aplikaci pou╛φvajφcφ komponentu TNMUDP nalezneme v adresß°i Program Files\Borland\CBuilder\Examples\Interner\Udp. ProhlΘdn∞te si tuto aplikaci a sna╛te se pochopit, jak pracuje.
13. Komponenty NetMasters III