
A mellékelt példaprogram megnyitása előtt a SMTPInfo.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component – Install Component menüpontot.
A felhasználó által létrehozott elektronikus postafiókok adatai, beállításaiknak információi a Rendszerleíró adatbázis egy meghatározott kulcsában tárolódnak, így más alkalmazások által is hozzáférhetők. A cikkben elkészített komponens is innen olvassa ki őket.
Az információk két részletben tárolódnak. Mivel a rendszer több fiókinformációt tartalmazhat, első lépésben meg kell határoznunk, hogy ezek közül melyik az alapértelmezett. Ezt a Registry következő kulcsa alatt találjuk meg, a „Default Mail Account” bejegyzésben:
HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager
Ennek értékét kiolvasva egy újabb kulcsnevet kapunk, melynek adatai már a fiókinformációkat tartalmazzák.
A kulcs a
Registry HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts
kulcsa alatt található, ahonnan már csak ki kell olvasnunk a szükséges bejegyzéseket.
A komponens GetSmtpInfo metódusa szolgál arra, hogy ezeket az adatokat egy TStringList típusban visszaadja.
function GetSmtpInfo : TStringList;
A metódusban első lépésben kiolvassuk az alapértelmezett fiók kulcsát:
list := TStringList.Create;
Registry := TRegistry.Create;
try
Registry.RootKey := hkey_CURRENT_USER;
if Registry.OpenKey('software\microsoft\internet account manager', False) then begin
AccountStr := Registry.ReadString('default mail account');
Registry.CloseKey;
...
Ezt követően sorban kigyűjtjük a bejegyzések értékeit:
if (AccountStr <> '') then begin
if Registry.OpenKey('software\microsoft\internet account manager\accounts\' + AccountStr, False) then begin
begin
list.Add('Bejegyzés neve: ' + Registry.ReadString('Account Name'));
...
result := list;
Az alkalmazásban már csak meg kell hívnunk a komponens metódusát:
list := TStringList.Create;
...
list := smtpInfo1.GetSmtpInfo;
És kiolvasni a TStringList adatait.
for i:=0 to list.Count-1 do
begin
listBox1.Items.Add(list.Strings[i]);
end;