MAPI protokoll | ScrollMAX

MAPI protokoll

A Scroll program képes együttműködni azon levelező kliens programokkal, amik MAPI protokollon keresztül fogadni tudnak adatokat.
A programok áttekintő listája:

Nem Microsoft termékek:

  • Mozilla (ThunderBird)
  • Opera Mail
  • Régi Opera integrált böngésző és levelező
  • ... stb ...

Microsoft termékek:

  • Outlook Express
  • Outlook
  • Windows Live Mail (ingyenes)

A két család közötti legfőbb differencia, hogy a Microsoft termékek:
a.) 
Képesek befogadni, és a levél részeivé tenni a logo (kép) állományokat, amennyiben azok a fájlrendszerben találhatóak.
b.) 
Képesek a HTML mellékletet a levél törzsévé tenni, amennyiben nincs alapértelmezetten megadott levéltörzs (kvázi javíthatóvá válik a levél). A nem MS csoport a mellékletben kapott HTML-t nem konvertálják levéltörzzsé, így az nem szerkeszthető.
c.)
Nem szabványos módon kezelik a behúzásokat a válaszoknál. Ezért pl. egy válaszlevélben szükséges lehet színek használata, hogy elkülönüljön a reakció az eredeti levél elemeitől - míg a ThunderBird v. egy GMAIL felület értelmesen behúzza és jelöli az eredeti szöveget, míg a választ a legfelső szinten (0 margó) engedi írni.
d.)
A levélküldés (MAPI hívás) során blokkoljáka az őket hívó programokat - modálisan működnek, azaz addig nem engedik a Scrollt tovább futni, amíg akár OK (Küldés), akár Mégsem gombbal az Új levél ablakot a felhasználó be nem zárta. Ekkor adnak hibakódot a megnyomott gombnak megfelelően.
A nem MS termékek a MAPI hívásnál megmutatják az Új levél ablakot, és azonnal visszaadják a vezérlést a Scroll rendszernek egy hibakóddal.

Sajnos a legújabb MS termékekben a cég szakított a beépített levélszerkesztő használatával, és a Word-öt használja erre a célra; ami sajnos egy belső konverteren keresztül szétzilálja a megkapott tartalmat, és elveszhetnek a Scrollban beállított CSS stílusok.

Továbbá ez a konverzió jelentősen meglassulhat, ha a küldendő levélben szereplő logo nagy méretű, vagy lassan elérhető forrásból kerül belinkelésre (https proxy). Javasoljuk a fejlécben szereplő képeket optimalizált formában, mindenki dolgozó számára könnyen letölthető helyről biztosítani.

A MAPI protokoll csak a legfőbb levél mezők átadására lett felkészítve, úgy mint:

  • Feladó (általában nem működik, az aktuális személyt használja)
  • Címzett
  • Tárgy
  • Szövegtörzs
  • Mellékletek (ha nincs szövegtörzs, az MS termékek átveszik az első HTML v. Text mellékletet)

A protokoll csak LEHETŐSÉGET AD az információcserére, de a levelező kliens dönti el, mihez kezd a megkapott tartalommal.
Azaz: mit vesz át, azt hogyan konvertálja, tördeli, jeleníti meg, szabdalja szét, stb.
Így pl. arra, hogy a MS Outlook milyen módon fogja nyomtatni a levelet, nincs kihatásunk.

További fontos megjegyzés, hogy a levelező kliens nem csak a küldéskor, hanem az ügyfél oldali fogadáskor is átalakíthatja a megkapott levelet. Ezért a Scroll nem tudja garantálni, hogy a tartalom miképpen ér célba.
Tudunk olyan esetről, hogy az Outlookból kapott tartalom a GMAIL felületen átalakul; illetve olyanról is, hogy a ThunderBird levelező programból kézzel küldött levél az Outlookban nem jelent meg, csak félig.

Mindez a levelező kliensek közötti eltérésekből fakad.

A MAPI protokollt a MAPI.DLL szolgálja ki.
A MAPI.DLL-t a levelező kliensek regisztrálni szokták. 64 bites rendszereken sajnos két ága van a regisztrációs adatbázisnak (Registry), ezért fontos, hogy a levelező mindkét ágon szerepeljen (SysWOW64, 32 bites ág).

A protokoll működését a telepített programok és szolgáltatások befolyásolják. Ilyenek a víruskeresők, tűzfalak, proxyk és minden más.

Az Outlook 2013 és NOD32 például egy kényes kombináció. A NOD32 egyes gépeken használt Outlook kiterjesztése (Extension) többféle hibát is okozott:

  • A program kifagyása - Access Violation hibaüzenettel
  • Az Outlook zárolta az elküldendő levelet és nem tudta törölni ebből a mappából
  • A levelek megduplázódtak
  • Stb.

A MAPI hibák kapcsán az első tisztázandó dolog, hogy létezik-e levelező kliens a gépen, és az nem-e rendszergazdai v. magasabb joggal fut. Ekkor ugyanis a MAPI.DLL nem tudja megszólítani.

A második kérdés, hogy a: "mailto xy@xy.hu" parancs képes-e eljuttatni hozzá a levelet. Ez viszont nem fog tudni mellékletet átadni.

További tesztelésre az ADOBE Reader "Attach to mail" vagy "Csatolás levélként" funkciója ajánlott, ami a megnyitott PDF-et próbálja közvetíteni.
Hasonlóan lehet próbát tenni a helyi menü, "Küldés levélként" funkcióval; valamint az XNView képnézegető "Létrehozás\Képek csatolása" menüvel.

Ha ezek bármelyikén fennakad a rendszer, akkor a hiba valószínűleg a MAPI protokoll és a levelezőkliens között van, és nem a Scroll programban.

 

Az Outlook/Office egyes verziói (pl. 2016) esetében a levelezőben még jól jelenik meg a levél, a formázás is helyes, de a kiküldés után egyszerű szövegessé változik a formátum, és bekerül egy "winmail.dat" állomány.
Ekkor az alábbi link segíthet a megoldásban: http://www.ryadel.com/en/configure-outlook-to-not-use-winmail-dat-to-send-attachments/

A Registry-ben a "DisableTNEF" opciót érdemes ellenőrizni, mivel a Windows egyes frissítések után előszeretettel átállítja.

 

A MAPI protokoll kapcsán felmerülő gyakori hibák

A levél elkészül, elküldi a rendszer, de nem érkezik meg:

MS terméknél bevezetésre került a protokollnév kötelező megadása a címzettek előtt.
Ezt "SMTP:" előtaggal kell jelölnie a MAPI-t használó programnak (l. Scroll).
Ezért a Scroll programban globálisan és lokálisan (konkrét számítógép felhasználónként) is megadható, hogy szükséges-e a protokoll szerepeltetése, ugyanis egyéb levelező programok meg kifejezetten ettől válnak működésképtelenné.

1. hibakód:

A MAPI protokoll elérhetetlen.
Maga a fejlesztőeszköz is végez ellenőrzéseket, amennyiben nem közvetlen meghívás történik.
Ha a 32 és 64 bites registry nem tartalmazza egyaránt a MAPI=1 értéket a következő helyeken, vagy a MAPI DLL nem betölthető, szintén ezt a hibát kapjuk:
32 bit, 64 bit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem
32 bit, 64 bites gépen:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Messaging Subsystem


Szintén egyes kódot kapunk vissza, ha Microsoft termékekben (Outlook) a levél küldését megszakítjuk (mégsem küldjük).

2. hibakód:

Ez legtöbbször egy MAPI alapértelmezett program hívási hibáját jelöli.
A program megpróbál küldeni, de a MAPI hívás nem tud megérkezni a levelező klienshez, mert valami blokkolja.
A következők fordulhatnak elő:
a.)
A levelező kliens rendszergazdai módban indul, vagy magasabb jogosultságokkal

Próbáljuk meg a Scrollt is ebben indítani. Ha így sikerül, vagy hiba dialógus jelenik meg, akkor könnyebben tudunk továbblépni.
Vigyázat: vannak programok, amiket telepítés után magából a telepítőből nem érdemes elindítani, mert még rendszergazdai módban vagyunk, és ilyenkor egyes közben módosított erőforrások a normál indítás után elérhetetlenné válnak (pl. Notepad++ nem fogadja Drag (behúzás) műveleteket).

b.) 
A víruskereső nem tekinti megbízhatónak a Scrollt, így kisebb jogosultságokat ad neki.

Elsőre kapcsoljuk ki az antivírus/tűzfal programot és nézzük meg mi történik. Ha így fut, akkor adjuk meg kivételnek a Scrollt.

c.)
A MAPI protokoll rendszerkomponensei sérültek, vagy a hívás nem megvalósítható - pl. a levelező kliens regisztrált útvonala hibás, stb.

A levelező kliens újratelepítése. Érdemes kipróbálni más klienseket is, hogy produkálják-e a problémát.

A levelező kliens indítási közben lefagy a Scroll (Access Violation hibával):

Ebben az esetben a levelező kliens hibásan települt, vagy egy beépülő modul (pl. NOD antivírus) hibásan kezeli a hívást.

Telepítsük újra a programot, vagy kapcsoljuk ki a beépülő modulokat. Ha így működik, akkor ez volt a hibás.

Az Outlook kimenő (elküldendő) levelek ott ragadnak a mappában - pedig a küldés sikerült:

Ezt NOD32-Outlook 2013 kombinációnál tapasztaltuk. A NOD32 beépülő leblokkolta a levelet, így nem engedte törölni az elküldendő elemekből.

Az alapvető MAPI hibakódok és megnevezésük

  • 0- SUCCESS_SUCCESS
  • 1- MAPI_USER_ABORT
  • 2- MAPI_E_FAILURE
  • 3- MAPI_E_LOGIN_FAILURE
  • 4- MAPI_E_DISK_FULL
  • 5- MAPI_E_INSUFFICIENT_MEMORY
  • 6- MAPI_E_ACCESS_DENIED
  • 8- MAPI_E_TOO_MANY_SESSIONS
  • 9- MAPI_E_TOO_MANY_FILES
  • 10- MAPI_E_TOO_MANY_RECIPIENTS
  • 11- MAPI_E_ATTACHMENT_NOT_FOUND
  • 12- MAPI_E_ATTACHMENT_OPEN_FAILURE
  • 13- MAPI_E_ATTACHMENT_WRITE_FAILURE
  • 14- MAPI_E_UNKNOWN_RECIPIENT 
  • 15- MAPI_E_BAD_RECIPTYPE 
  • 16- MAPI_E_NO_MESSAGES 
  • 17- MAPI_E_INVALID_MESSAGE 
  • 18- MAPI_E_TEXT_TOO_LARGE
  • 19- MAPI_E_INVALID_SESSION
  • 20- MAPI_E_TYPE_NOT_SUPPORTED
  • 21- MAPI_E_AMBIGUOUS_RECIPIENT
  • 22- MAPI_E_MESSAGE_IN_USE
  • 23- MAPI_E_NETWORK_FAILURE
  • 24- MAPI_E_INVALID_EDITFIELDS
  • 25- MAPI_E_INVALID_RECIPS
  • 26- MAPI_E_NOT_SUPPORTED