Csubák Péter: Saját Web-böngésző készítése II

Az első cikkben utaltam rá, hogy a böngészőbe kell majd készíteni egy levelező programot, ebben a cikkben ennek a programnak az e-mail küldő részét fogom leírni.

Elképzelés

Fontos, hogy először is azt találjuk ki, hogy hogyan fog kinézni a program ezen része. Ennek a problémának a megoldását mindenkinek a saját képzeletére bízom. A komponens, amit használni fogunk, megköveteli, hogy néhány fontos adatot adjunk meg, még mielőtt használnánk. Mivel azonban ezek az adatok különböznek minden felhasználónál, ezért mielőtt a programot használni kezdené a felhasználó ezeket az adatokat meg kell adnia, ezek után ezek az adatok a winchesteren tárolásra kerülnek, és a későbbiekben minden használatnál innen olvasódnak ki. Erre a feladatra (az adatok felvételére és később a módosításukra) készítsünk egy külön formot.

Ha mindenkinek a fejében megszületett már a kinézet, akkor lássunk hozzá a dolgok boncolgatásához.

Adatfelvétel

Tehát készítenünk kell egy új formot amiben az adatokat fogjuk felvenni, ezt kössük a böngészőnk menüjének "Levél küldése" menüpontjához. Majd az új formunkra helyezzünk föl 4 darab labelt és edit-et felváltva. Aki Delphi 6 vagy a fölötti verziót használ az használhatja a labelededit komponenst is. A labeleknek állítsuk be a következő caption-nöket:

Név:

E-mail cím:

Szerver host:

Felhasználónév:

Majd helyezzünk fel egy gombot, ennek állítsuk be például a "Rendben" caption-t. Én, ha valamilyen adatot fájlba kell menteni, és később onnan kell visszaolvastatni abban az esetben általában egy sima memo-t használok melynek meghatározott soraiba kerülnek az adatok elmentve a memo sorait azok megtalálhatóak lesznek a fájlban.

Ez gyorsabb, mint a sima fájlkezeléses módszer. Ennek megfelelően helyezzünk fel a formra egy memo-t, de ennek nincs szerepe a felhasználó részére, ezért ezt tegyük láthatatlanná: visible := false (Vagy: )

A gomb OnClick eseményéhez kössük a következőket:

if not ((labelededit1.text='') or (labelededit2.text='') or

 (labelededit3.text='') or (labelededit4.text='')) then

begin

memo1.Lines.Append(labelededit1.Text);

memo1.Lines.Append(labelededit2.Text);

memo1.Lines.Append(labelededit3.Text);

memo1.Lines.Append(labelededit4.Text);

memo1.Lines.SaveToFile('.\adat.dat');

close;

end

else

showmessage('Nincs kitöltve minden mező!');

end;

Természetesen a fájlnév lehet más is. Ezek után hozzunk létre egy ilyen fájlt, majd a böngészőnk új levél menüjéhez kössük a következőket:

begin

if not ((form4.memo1.Lines.Strings[0]='') or

(form4.memo1.Lines.Strings[1]='') or

(form4.memo1.Lines.Strings[2]='') or

 (form4.memo1.Lines.Strings[3]='')) then

begin

form5.show;

end

else

begin

form4.show;

showmessage('Töltse ki a mezőket!');

end;

end;

A levélküldő

A fenti forrásból látszik, hogy létre kell hozni egy form5 nevű formot (nem kell feltétlenül form5-nek lennie, lehet más is a neve, csak akkor ezen a néven kell rá hivatkozni). Ezen a form5-tön lesz valójában a levélküldő. Tehát erre a formra helyezzünk fel egy memo-t, és egy gombot a gomb caption-jének állítsuk be: "Levél küldése!". Helyezzünk fel a formra egy nmsmtp komponenst. Majd a form OnShow eseményéhez kössük a következőket:

nmsmtp1.PostMessage.FromAddress:=form4.memo1.Lines.Strings[1];

nmsmtp1.PostMessage.FromName:=form4.memo1.Lines.strings[0];

nmsmtp1.Host:=form4.memo1.Lines.strings[2];

nmsmtp1.UserID:=form4.memo1.Lines.Strings[3];

Itt nem fordulhat elő, hogy a különböző beállításokba nem kerül semmi, hiszen a form csak akkor kerül megmutatásra, ha minden adatot megadtunk.

Helyezzünk föl a form-ra egy labelededit-et (régebbi verziót használók természetesen egy editet és egy labelt) a caption-jének állítsuk be: "A címzett e-mail címe:" (Ebből lehet többet is küldeni, hisz nem csak egy címzettje lehet egy e-mail-nek). Ezen kívül kell még két labelededit az egyik a levél témájára kérdez a másik pedig a válaszcímre. Természetesen a válaszcím lehet a megadott e-mail cím is ezért ennek a labelededit-nek az OnClick eseményéhez köthetjük a következőt:

labelededit4.Text:=form4.memo1.Lines.Strings[1];

Ezáltal amikor be akarja írni a felhasználó a válaszcímet akkor automatikusan felajánlódik a saját címe.

Állítsuk be a levél küldése gomb OnClick eseményéhez a következőket:

nmsmtp1.PostMessage.ToAddress.Add(labelededit1.text);

nmsmtp1.PostMessage.ToAddress.Add(labelededit2.text);

nmsmtp1.PostMessage.Subject:=labelededit3.Text;

nmsmtp1.PostMessage.ReplyTo:=labelededit4.Text;

nmsmtp1.PostMessage.Body.AddStrings(memo1.Lines);

panel1.Visible:=true;

nmsmtp1.Connect;

panel1.Caption:='Levél Küldése!';

nmsmtp1.SendMail;

panel1.Caption:='Lekapcsolódás!';

nmsmtp1.Disconnect;

panel1.Visible:=false;

A fenti forrásból kiderül, hogy egy panelt használtam az állapotok jelzésére, ez természetesen nem kötött tehát lehet mást is használni.

A programot különböző egyéb komponensekkel lehet tovább szépíteni, de ezt mindenkinek a saját fantáziájára hagyom, példának tettem ide annak a formnak a képét, amivel én dolgoztam, remélem ez megindítja a fantáziáját azoknak akiknek nincs elképzelésük a program kinézetével kapcsolatban.

Továbbiak

Megnyugtatás képen, ez a rész volt a leghosszabb az egész böngésző készítése során, de még hátra van a kedvencek kezelése, a weblap készítő, és a levél fogadó.