AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ist MAPI verfügbar?

Ein Thema von rollstuhlfahrer · begonnen am 6. Apr 2011 · letzter Beitrag vom 8. Apr 2011
Antwort Antwort
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#1

Ist MAPI verfügbar?

  Alt 6. Apr 2011, 10:38
HI @all,

in meinem Programm soll eine Mail per MAPI verschickt werden (Klick auf Button). Das funktioniert auch soweit. Nun will ich noch erkennen, ob es überhaupt möglich ist, eine Mail per MAPI zu versenden. Leider schlagen meine Erkennungsversuche immer wieder fehl. Einfach den Wert in der Registry zu prüfen (wie das in der MAPI-Unit von Delphi passiert) reicht nicht aus, da in meiner VM kein Mail-Client installiert ist (auch nicht Outlook Express) und der Wert in der Registry trotzdem "1" ist. Was ich bis jetzt habe sieht so aus:

Delphi-Quellcode:
function IsMAPIEnabled: boolean;
var
  hkWMS: HKEY;
  MAPIValueSize: Longint;
  MAPIValueBuf: array[0..8] of char;
  rType: Longint;
  MAPISession: PLHANDLE;
begin
  Result := false;

  MAPIValueSize := sizeof(MAPIValueBuf);
  if RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows Messaging Subsystem',
      0, KEY_READ, hkWMS) <> ERROR_SUCCESS then Exit;
  if RegQueryValueEx(hkWMS, 'MAPI', nil, @rType, @MAPIValueBuf,
      @MAPIValueSize) <> ERROR_SUCCESS then Exit;
  RegCloseKey(hkWMS);
  if not ((MAPIValueBuf[0] = '1') and (MAPIValueBuf[1] = #0)) then Exit;

  MAPISession := nil;
  if MapiLogOn(0, nil, nil, 0, 0, MAPISession) <> SUCCESS_SUCCESS then Exit; // Das scheint nicht zu funktionieren
  MapiLogOff(MAPISession^, 0, 0, 0);

  Result := true;
end;
Wie erkennt man jetzt zuverlässig (möglichst ohne Try&Error), ob MAPI jetzt geht oder nicht?

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#2

AW: Ist MAPI verfügbar?

  Alt 6. Apr 2011, 10:56
Die Prerequsites für MAPI sind m.E. nach folgende:

1. Das Vorhandensein der MAPI32.dll/MAPI64.dll
2. Das Vorhandensein des genannten Registry Keys.


Ich würde auf MAPI32.DLL/MAPI64.DLL prüfen !


Christian
Christian Wahl
me, myself and I, die lustigen Drei !!

Geändert von chrisw ( 6. Apr 2011 um 10:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

AW: Ist MAPI verfügbar?

  Alt 6. Apr 2011, 11:08
Das reicht leider nicht aus. Sowohl in der VM (ohne Mail-Client) als auch auf einem Rechner mit Mail-Client existiert diese Datei (mapi32.dll).

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#4

AW: Ist MAPI verfügbar?

  Alt 6. Apr 2011, 11:15
Aber, unabhängig ob ein Mailclient istalliert ist, oder nicht, sind das die Vorraussetzungen für das funktionieren der MAPI API . D.h. also, dass auch auf deiner VM Mapi funktionieren sollte !

Christian
Christian Wahl
me, myself and I, die lustigen Drei !!
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

AW: Ist MAPI verfügbar?

  Alt 6. Apr 2011, 11:19
Nun ja, kommt darauf an, was man unter "funktionieren" versteht. MapiSendMail quittiert das mit E_FAIL und GetLastError weißt auf ERROR_PROC_NOT_FOUND hin (The specified procedure could not be found.). Ich würde halt nur gerne vorher wissen, ob das geht oder nicht.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#6

AW: Ist MAPI verfügbar?

  Alt 6. Apr 2011, 12:03
Hmm, dann vielleicht checken, ob Standard EMail Client definiert ist !
unter:
HKEY_CLASSES_ROOT\ mailto\ shell\ open\ command

Christian
Christian Wahl
me, myself and I, die lustigen Drei !!
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz