Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Benutzer-Mailadresse aus Netscape- bz. Opera-Mail (https://www.delphipraxis.net/9699-benutzer-mailadresse-aus-netscape-bz-opera-mail.html)

FriFra 2. Okt 2003 08:12


Benutzer-Mailadresse aus Netscape- bz. Opera-Mail
 
Das Lesen der Benutzer-Mail (nicht Adressbuch!) aus Outlook ist bereits fertig ;)
http://www.delphipraxis.net/internal...?p=77276#77276

Allerdings hätte ich noch gern gewusst, wo Netscape und Opera diese Daten speichern. Falls jemand von euch den Mailclient eines dieser Browser verwendet, wäre es schön, wenn ich diese Infos haben könnte.

Tom 2. Okt 2003 08:43

Re: Benutzer-Mailadresse aus Netscape- bz. Opera-Mail
 
Opera 7.20: contacts.adr
Code:
Opera Hotlist version 2.0
Options: encoding = utf8, version=3

#CONTACT
   ID=179
   NAME=Tom
   CREATED=1065080907
   ACTIVE=YES
   MAIL=Tom@MirEgal.de
   ICON=Contact0

#FOLDER
   ID=148
   NAME=Papierkorb
   CREATED=1050224019
   TRASH FOLDER=YES

-
Die Datei liegt im Installationsverzeichnis. Keine Ahnung ob das immer so ist ...

Ich würde allerdings an Deiner Stelle einfach mal die Browser installieren. Dann hast Du etwas zum Testen.

FriFra 2. Okt 2003 08:49

Re: Benutzer-Mailadresse aus Netscape- bz. Opera-Mail
 
#Contact lässt für mich darauf schliessen, dass es sich um einen Kontakt handelt. Ich suche aber die Adresse des Benutzers, nicht Adressen aus dem Adressbuch. Oder handelt es sich tatsächlich um die Mailadresse des Benutzers (da vermisse ich aber z.B. den SMTP-Server)?

Tom 2. Okt 2003 08:58

Re: Benutzer-Mailadresse aus Netscape- bz. Opera-Mail
 
Die Frage habe ich jetzt auch mal gelesen.

[Dokumente und Einstellungen] accounts.ini:

Code:
Opera Preferences version 2.0
; Do not edit this file while Opera is running
; This file is stored in UTF-8 encoding

...

[Account3]

Real Name=Tom
Email=Miregal.de

...
Was es mit Account3 auf sich hat: *achselzuck*, es gibt da mehrere. Als EMail habe ich - nur für Dich - tatsächlich "MirEgal.de" angegeben.

Bei Bedarf: Schick mir eben Deine E-Mail per PM, ich schicke Dir dann die ganze Datei.

Christian Seehase 2. Okt 2003 10:15

Re: Benutzer-Mailadresse aus Netscape- bz. Opera-Mail
 
Moin FriFra,

wenn's um Opera geht, müsstest Du auch auf deren HP einiges finden.
Dort sind z.B. auch die gesamten programmeigenen Dateiformate dokumentiert.

FriFra 2. Okt 2003 10:46

Re: Benutzer-Mailadresse aus Netscape- bz. Opera-Mail
 
Also Opera ist gelöst :-D ... jetzt fehlt noch Netscape!

Es kann ja mal ein Opera-Mail User den folgendenn Code Testen:
Delphi-Quellcode:
  function GetOperaMail(DisplayName: boolean): string;
    function GetOperaDir: string;
    var
      RDI: TRegistry;
      Suf: string;
      n: integer;
    begin
      RDI := TRegistry.Create;
      try
        RDI.RootKey := HKEY_CURRENT_USER;
        RDI.OpenKey('SOFTWARE\Opera Software', False);
        for n := -1 to 10 do
        begin
          if n = -1 then
            Suf := ''
          else
            Suf := IntToStr(n);
          if RDI.ValueExists('Last Directory' + Suf) then
          begin
            Result := RDI.ReadString('Last Directory' + Suf);
            if copy(Result, Length(Result), 1) <> '\' then
              Result := Result + '\';
          end;
        end;
      finally
        RDI.Free;
      end;
    end;
    function GetAppdataDir: string;
    var
      shellMalloc: IMalloc;
      ppidl: PItemIdList;
    begin
      ppidl := nil;
      try
        if SHGetMalloc(shellMalloc) = NOERROR then
        begin
          SHGetSpecialFolderLocation(Self.Handle, CSIDL_APPDATA, ppidl);
          SetLength(Result, MAX_PATH);
          if not SHGetPathFromIDList(ppidl, PChar(Result)) then
            raise exception.create('SHGetPathFromIDList failed : invalid pidl');
          SetLength(Result, lStrLen(PChar(Result)));
        end;
      finally
        if ppidl <> nil then
          shellMalloc.free(ppidl);
      end;
      if copy(Result, Length(Result), 1) <> '\' then
        Result := Result + '\';
    end;
    function GetAccountsINI(Path: string): string;
    var
      search: TSearchRec;
      directory, Tmp: string;
    begin
      Result := '';
      directory := ExtractFilePath(Path);

      // find all files
      if (pos('opera', LowerCase(Path)) > 0) then
        if (FileExists(Path) = True) then
          Result := Result + ';' + Path;

      // Subdirectories/ Unterverzeichnisse
      if FindFirst(directory + '*.*', faDirectory, search) = 0 then
      begin
        repeat
          if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1]
            <> '.') and ((pos('opera', LowerCase(search.Name)) > 0) or
            (pos('opera', LowerCase(directory)) > 0)) then
          begin
            Tmp := GetAccountsINI(directory + search.Name + '\' +
              ExtractFileName(Path));
            if Tmp <> '' then
              Result := Result + ';' + Tmp;
          end;
        until FindNext(search) <> 0;
        FindClose(search);
      end;
      if copy(Result, 1, 1) = ';' then
        Result := copy(Result, 2, Length(Result));
    end;
  var
    INI: TIniFile;
    AccountIni: string;
    AccountsIni: string;
    Accounts: TStringList;
    n: integer;
  begin
    Result := '';
    //alte Versionen
    AccountIni := GetAccountsINI(GetOperaDir + 'account.ini') + ';';
    while (pos(';', AccountIni) > 1) do
    begin
      INI := TIniFile.Create(copy(AccountIni, 1, pos(';', AccountIni) - 1));
      AccountIni := copy(AccountIni, pos(';', AccountIni) + 1,
        Length(AccountIni));
      try
        if INI.ReadString('SETTINGS', 'EmailAddress', '') <> '' then
        begin
          if (DisplayName = True) and (INI.ReadString('SETTINGS', 'FullName', '')
            <> '') then
            Result := Result + ', ' + INI.ReadString('SETTINGS', 'FullName', '')
              + ' <' + INI.ReadString('SETTINGS', 'EmailAddress', '') + '>'
          else
            Result := Result + ', ' + INI.ReadString('SETTINGS', 'EmailAddress',
              '');
        end;
      finally
        INI.Free;
      end;
    end;

    //aktuelle Versionen
    AccountsIni := GetAccountsINI(GetAppdataDir + 'accounts.ini') + ';';
    while (pos(';', AccountsIni) > 1) do
    begin
      INI := TIniFile.Create(copy(AccountsIni, 1, pos(';', AccountsIni) - 1));
      AccountsIni := copy(AccountsIni, pos(';', AccountsIni) + 1,
        Length(AccountsIni));
      Accounts := TStringList.Create;
      INI.ReadSections(Accounts);
      try
        for n := 0 to Accounts.Count - 1 do
        begin
          if (pos('account', LowerCase(Accounts[n])) = 1) and
            (LowerCase(Accounts[n]) <> 'accounts') then
          begin
            if INI.ReadString(Accounts[n], 'Email', '') <> '' then
            begin
              if (DisplayName = True) and (INI.ReadString(Accounts[n],
                'Real Name', '') <> '') then
                Result := Result + ', ' + INI.ReadString(Accounts[n],
                  'Real Name', '') + ' <' + INI.ReadString(Accounts[n], 'Email',
                  '') + '>'
              else
                Result := Result + ', ' + INI.ReadString(Accounts[n], 'Email',
                  '');
            end;
          end;
        end;
      finally
        INI.Free;
        Accounts.Free;
      end;
    end;
    if Length(Result) > 0 then
      Result := Trim(copy(Result, 3, Length(Result)));
  end;

FriFra 2. Okt 2003 12:21

Re: Benutzer-Mailadresse aus Netscape- bz. Opera-Mail
 
Für den Netscape Communicator habe ich auch schon eine Lösung... Mir fehlt jetzt effektiv nur von für Netscape 6 und 7...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz