AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Abfrage ob MAPI vorhanden und eingerichtet
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage ob MAPI vorhanden und eingerichtet

Ein Thema von stalkingwolf · begonnen am 6. Nov 2013 · letzter Beitrag vom 18. Aug 2020
Antwort Antwort
Seite 1 von 2  1 2      
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#1

Abfrage ob MAPI vorhanden und eingerichtet

  Alt 6. Nov 2013, 16:31
Hallo!

Ich bin aktuell dabei mit der MAPI zu arbeiten.
Nun kann es sein, dass die MAPI nicht vorhanden bzw. kein Emailprogramm eingerichtet ist. Das hätte ich bei Kunden im Terminalserversystem die per RDP arbeiten. Dort ist in der Sitzung kein Emailprogramm vorhanden.

Eigentlich kein Problem, bis auf das ich beim Aufruf von OleCheck(MAPIInitialize(@MapiInit));
Eine schicke Meldung erhalte.
Nun würde ich gerne diese Meldung unterbinden.

Es gibt hier im Forum ( Stand 2011 ) ein Thread. Diesen habe ich ausprobiert bzw. die Reg Pfade überprüft. Das ergibt keinen Sinn und scheint auf jedem System anders zu sein.
Auch da prüfen auf mapi32.dll fällt aus, da diese Datei auf System vorhanden ist und dennoch kein Mailprogramm für den User eingerichtet ist.

Hat jemand eine Elegante Lösungsansatz?
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.250 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 6. Nov 2013, 21:14
ob man das sinnvoll Abfragen kann

Wenn er ein nicht eingerichtetes Mail Programm hat, dann hat er aber trotzdem MAPI
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 7. Nov 2013, 01:08
Ein Blick in die Doku zeigt, warum da eine Exception kommt Delphi-Referenz durchsuchenOleCheck

Entweder die Exception abfangen oder kein OleCheck verwenden
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#4

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 7. Nov 2013, 07:46
Nein kann man nicht.
Es ist keine Exception sondern eine 0815 Meldung.
Das ist ja das Bescheidene daran.
Miniaturansicht angehängter Grafiken
mapi.jpg  
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.250 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 7. Nov 2013, 08:04
Nein kann man nicht.
Es ist keine Exception sondern eine 0815 Meldung.
Das ist ja das Bescheidene daran.
Die Meldung kann man bestimmt abfangen, da das unter Systemsteuerung Internetoptionen gespeichert ist. Wo das sich in der Regedit versteckt musste leider selbst Googlen.

Aber gibt es das auf aktuellen Systemen überhaupt noch, es ist doch mindestens das Windows eigene Mailding dort eingetragen
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#6

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 7. Nov 2013, 08:27
Das löst das Problem nur halb.
Ich erhalte kein wirkliches Feedback.

In der Registry fange ich aber nicht an zu suchen. In der Vergangenheit hat es sich gezeigt, dass die verschiedenen Windows Versionen dafür zu unterschiedlich sind. Das soll ja nicht zu einer ABM verkommen

Auf Windows 2008 RC2 haben einige unsere Kunden oft keine Emailclient. Sie arbeiten per RDP darauf und haben die Clients Lokal installiert.
Für Kunden die das Programm auf Ihrem eigenen PC benutzen tritt das Problem auch nicht auf.
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.250 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 7. Nov 2013, 10:11
dazu würde ich sagen, wenns kein Terminalserver ist, ist ein Server nun mal kein Arbeitsplatz
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 7. Nov 2013, 11:10
Jetzt mal andersherum gefragt: Was willst Du mit MAPI auf diesem Server anstellen? Automatisiert E-Mails versenden oder ...
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#9

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 7. Nov 2013, 12:16
Drag&Drop aus Outlook bzw. einlesen von .msg Dateien.
Ich habe die Problematik umgangen.

Ich wollte nur wissen ob es eine Möglichkeit gibt heraus zu bekommen, das eine funktionsfähige MAPI vorhanden ist.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Abfrage ob MAPI vorhanden und eingerichtet

  Alt 8. Nov 2013, 09: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 10:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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