Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.530 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 8. Nov 2013, 10:10
Ja, es gibt eine Möglichkeit. Wenn mal als Hersteller eines Mailprogramms (ich bin so einer) seine Dienste im Betriebssystem zur Versendung mit Mails anbieten will, muss man sich dafür in der Registry eintragen (Anmerkung nur am Rande, dazu braucht man Adminrechte).

Ob sich ein E-Mail-Programm eingetragen hat, kannst Du mit dieser Funktion testen:

Delphi-Quellcode:
function GetStandardClient: String;
const
  cMailClient = '\SOFTWARE\Clients\Mail';
var
  reg: TRegistry;
  RegClientDefault: string;
  RegClientDefaultCurUser: string;
begin
  reg := TRegistry.Create;
  RegClientDefault := '';
  RegClientDefaultCurUser := '';

  try
    with reg do begin
      CloseKey;
      RootKey := HKEY_LOCAL_MACHINE;
      if OpenKeyReadOnly(cMailClient) then begin
        RegClientDefault := reg.ReadString('');
      end;
    end;
  finally
    reg.Free;
  end;

  reg := TRegistry.Create;
  try
    with reg do begin
      CloseKey;
      RootKey := HKEY_CURRENT_USER;
      if OpenKeyReadOnly(cMailClient) then begin
        RegClientDefaultCurUser := reg.ReadString('');
      end;
    end;
  finally
    reg.Free;
  end;

  if RegClientDefaultCurUser <> 'then begin
    if RegClientDefaultCurUser = RegClientDefault then begin
      Result := RegClientDefault;
    end else begin
       Result := RegClientDefault + ' in Registry HKEY_LOCAL_MACHINE und' + #13 +
                 RegClientDefaultCurUser + ' in HKEY_CURRENT_USER';
    end;
  end else begin
    Result := RegClientDefault;
  end;
end;
Damit kann man also den Namen des Programms rausfinden, dass im System die Mails bearbeitet (ich nutze es natürlich, um zu testen, ob sich unverschämterweise ein anderes Programm hier vorgedrängelt hat).

Wenn Du 100%-tig sichergehen willst, dass da nicht nur ein E-Mail-Spaßprogramm installiert ist, das nur "mailto-" Aufrufe abgreift, musst Du in der Registry auch noch den Eintrag DLLPath prüfen. Jedes MAPI-fähige Mailprogramm muss nämlich seine eigene MAPI-Implementation machen und eine DLL dafür ins System bringen. Die mapi32.dll ruft dann diese DLL vom Hersteller auf, die dann das E-Mail-Programm startet und dieses muss dann die Nachricht letztendlich bearbeiten.

Auch wenn Du Dein Problem schon gelöst hast, vielleicht stehst Du noch mal vor dieser Situation und hast keine Umgehungsmöglichkeit.

Ich habe Dir noch einen Screenshot angehängt, wo Du das mit dem Regitry-Eintrag mal optisch nachvollziehen kannst. Der stammt von meiner Entwicklungsmaschine, daher wundere Dich nicht über den Standort der MAPI-Dll, auf einer echten Installation wäre die im Programmverzeichnis von Safer Mail zu finden.
Miniaturansicht angehängter Grafiken
mapi.jpg  

Geändert von Harry Stahl ( 8. Nov 2013 um 11:38 Uhr)
  Mit Zitat antworten Zitat