Prz wysylaniu maili korzystam z kodu ponizej:
MAPIModule := LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
Result := -1
else
try
@SM := GetProcAddress(MAPIModule, 'MAPISendMail');
if @SM <> nil then
begin
Result := SM(0, Application.Handle, Message, MAPI_DIALOG or
MAPI_LOGON_UI, 0);
end
else
Result := 1;
finally
FreeLibrary(MAPIModule);
end;
Wywolanie tego kodu na jednym z komputerow zwraca wynik -1 a na innym
-2147467259. Na pozostalych komputerach wszystko dziala ok. Czy ktos
moze mi powiedziec co jest przyczyna tych bledow?
Pozdrawiam,
Jacek F.
Może nie masz poprawnie ustawionego domyślnego klienta poczty
porównaj zapisy w rejestrze:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\
--
Darek
Start -> "Określ dostęp do programów i ich ustawienia domyślne"
I tam postawiał
U osób które mają problemy z Optimą zawsze to pomaga :D
M
>>
>> Wywolanie tego kodu na jednym z komputerow zwraca wynik -1 a na innym
>> -2147467259. Na pozostalych komputerach wszystko dziala ok. Czy ktos
>> moze mi powiedziec co jest przyczyna tych bledow?
>
>
> Może nie masz poprawnie ustawionego domyślnego klienta poczty
> porównaj zapisy w rejestrze:
> HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\
>
Tez o tym myslalem, ale klient poczty z przegladarki internetowej
(mailto:....) uruchamia sie poprawnie.
Jacek
> Result := 1;
To jest mylące. MAPISendMail może zwrócić MAPI_E_USER_ABORT o wartości
1, i nie będziesz w stanie odróżnić swojej jedynki od tej z
MAPISendMail. Tym bardziej że przy nie załadowaniu MAPI.dll zwracasz -1.
> finally
> FreeLibrary(MAPIModule);
> end;
>
> Wywolanie tego kodu na jednym z komputerow zwraca wynik -1 a na innym
wg. dokumnetacji, MAPISendMail nie zwraca -1, czyli to problem z
załadowaniem MAPI.DLL (twoje -1 z kodu)
> -2147467259. Na pozostalych komputerach wszystko dziala ok. Czy ktos
> moze mi powiedziec co jest przyczyna tych bledow?
>
> Pozdrawiam,
> Jacek F.
Podstawowy problem jest taki, że MAPI.DLL zależy od aktualnego
"domyslnego" klienta poczty. Czyli funkcje z MAPI.DLL mogą działać róznie.
Kiedyś każdy klient poczty dodawał swoją MAPI.DLL bezpośrednio do
katalogów windows. Od Visty bodajże MAPI.DLL w katalogach windows jest
jedno, i ono przesyła wywołania do MAPI.DLL aktualnej domyślnej
aplikacji pocztowej.
To że Microsoft pisze na swoich stronach że MAPI to interfejs do
outlooka i exchange to gówno warty marketing.
kod błędu -2147467259 to inaczej FFFFFFFF80004005, z czego istotne jest
80004005 => non-specific error, w wolnym tłumaczeniu "coś się popsuło" ;-).
W kontekście MAPI może on oznaczać "MAPI Initialize error", co może
wskazywać na brak lub nieprawidłową konfigurację domyślnego klienta poczty.
--
Arivald
Tyle ze to jest obsługiwane jako rozszerzenie shella, a nie przez MAPI...
--
Arivald
To nie ma znaczenia.
Dla simplemapi klucze muszą być dokładnie ustawione (ustawiona wartość
domyślna w/w klucza)
SimpleMaipi z JEDI wykonuje bardziej zaawansowane sprawdzenia rejestru,
ale nie sprawdzałem jeszcze czy jest bardziej odporne na różne
ustawienia stacji klienckich
[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail]
@="Mozilla Thunderbird"
[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Mozilla Thunderbird]
@="Mozilla Thunderbird"
"DLLPath"="S:\\ThunderBird\\App\\thunderbird\\mozMapi32_InUse.dll"
--
Darek
A jaki OS? bo na Win7 chyba zmieniono mapi i nie jest tak lekko.
Pozdrawiam
Mariusz
>>> Prz wysylaniu maili korzystam z kodu ponizej:
>>>
>
>>>
>>> Wywolanie tego kodu na jednym z komputerow zwraca wynik -1 a na innym
>>> -2147467259. Na pozostalych komputerach wszystko dziala ok. Czy ktos
>>> moze mi powiedziec co jest przyczyna tych bledow?
>>
>>
>> Może nie masz poprawnie ustawionego domyślnego klienta poczty
>> porównaj zapisy w rejestrze:
>> HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\
>>
> Tez o tym myslalem, ale klient poczty z przegladarki internetowej
> (mailto:....) uruchamia sie poprawnie.
A to ma jakiś związek z MAPI ???