Mail fájlok és a CDO 1.

Abba a problémába futottam a levlista program fejlesztgetése során, hogy hogyan dolgozzuk fel azokat a leveleket amik az SMTP szerver drop könyvtárába érkeznek, vagy bármilyen más MIME formátumú levelet. Ha ez a levél eml kiterjesztéssel rendelkezik és egyszerűen rákattintunk akkor jön az Outlook Express és megmutatja a levelet. Természetesen ha programból kell csinálnunk valamit vele, akkor ez nem lesz ilyen egyszerű.  Például mi van akkor, ha szükségünk van egy From egy To vagy egy Subject mezőre? Esetleg a levél törzsét (HTML Body) szeretnénk letárolni egy adatbázisba?
Megtehetjük azt, hogy reguláris kifejezésekkel kiszedjük a fájlból amire szükségünk van. Megtehetjük, hogy írunk egy feldolgozó programot ami megfelelően szétszedi a levelet az igényeinknek megfelelően. Egyik megoldás sem egyszerű, ráadásul szükségtelen. A Microsoftnak van egy megfelelő objektum könyvtára erre. Ez a CDO (vagy CDOEX).
A feladatunk annyi, hogy a levelet betültsük egy CDO.Message objektumba. Ezzel csak egy probléma van. Ez az objektum nem kínál közvetlenül olyan lehetőséget, hogy fájlból betöltsük a tartalmát. Ezért azt tehetjük meg, hogy a fájlt megnyitjuk egy ADODB.Stream-ként és ezt adjuk meg adatforrásként a CDO.Message objektumnak. Ez JScriptben így fog kinézni:
function LoadMsgFile(FileName) 
{ 
    var adTypeBinary = 1; 
    var Msg; 
    var MsgStream; 
    Msg = new ActiveXObject("CDO.Message"); 
    MsgStream = new ActiveXObject("ADODB.Stream"); 
    MsgStream.Type = adTypeBinary; 
    MsgStream.Open(); 
    MsgStream.LoadFromFile(FileName); 
    Msg.DataSource.OpenObject(MsgStream,"_Stream"); 
    return Msg; 
}

Leave a Reply

Your email address will not be published. Required fields are marked *