[ alex @ 11.04.2002. 16:22 ] @
Radi li neko nesto s ovim?

Vec nekoliko dana pretrazujem glupi MSDN kako bih resio problem, koji mi izgleda kao poprilicno trivijalan. Nemam nekog velikog iskustva sa Outlook COM objektom, a poprilicno me nervira problem.

O cemu se radi - pravim ATL COM Add-in biblioteku za Outlook i u jednoj funkciji klase CMailParser imam sledece:

Code:

string CMailParser::GetHeadlineFromItem(_MailItemPtr item)
{
    string sReturned = string("");
    if (item->UnRead == VARIANT_TRUE) {
        // body = currItem->Body; // get msg body
        string subject = item->Subject; // get msg subject
        string from = item->SenderName;   // get msg Sender
        sReturned = string(": ") + subject;
    }
    return sReturned;
}


E, sad - svaki put kada ova funkcija pokusa da preuzme item->SenderName Outlook prijavi upozorenje da "neka aplikacija" pokusava da pristupi email adresama koje su smestene u Outlook-u i pita me da li zelim da to dozvolim.

Elem, posto je i vise nego razumljivo i neprihvatljivo da taj prozorcic stalno iskace korisnicima aplikacije koju radim, kako da na siguran i relativno jednostavan nacin dodjem do SenderName-a?

Mrzelo me da se bakcem sa kreiranjem ItemProperty objekta pa da od njega busam i nabadam sve sto mi je potrebno, a vec sam probao i sa item->GetSenderName i item->get_SenderName funkcijama. Sve daju isto upozorenje.

Ima li neko kakvu ideju?
[ leka @ 11.04.2002. 19:22 ] @

Elem alex sećaš se da smo o tome pričali davno na IRC-u, o mojim mukama sa OutLook-om kao COM objektom... Dragi Tata me je uputio na codeproject i tamo sam našao mnogo dobru stvari koja se zove CMapi . To treba da pogledaš i eventualno i iskoristiš.

Ja sam imao nekih problema sa tim jer TOutLookApplication komponenta u Borland C++ Builder-u 5.0 nešto nije radila, tj. radila je ali ne kako sam očekivao, tako da sam se vratio na MAPI .

Ukratko rad sa OutLookom se svodi na sledeće
- kreiraš objekat sa CreateObject("Outlook.Application")
- kreiraš NameSpace sa olApp->GetNamespace("MAPI"); // olApp je pointer na OutLook...
(e sad sledi ono što ti garant nisi uradio)
- olNs->Logon(sProfile, "", True, True); //olNs je pointer na NameSpace, a sProfile je string koji sadrži ime profila koji koristiš...
- kreiraš MailItem sa olApp->CreateItem(olMailItem);

Jedna napomena - sProfile ti je najbolje da pokupiš iz Registry-ja ja sada ne znam tačno kako se zove ključ, ali se zove nešto tipa "Default OutLook Profile" !

Pozdrav!


[ leka @ 11.04.2002. 19:34 ] @
Code:

cvs -d:pserver:[email protected]:/cvsroot/leka login 
ENTER
cvs -z3 -d:pserver:[email protected]:/cvsroot/leka co smail

Ovde ti je source od VisualBASIC koda koji je zapravo maleni command-line program za slanje pošte, a koji koristi OutLook. Kod govori sam za sebe. Na osnovu njega se takođe lako napiše i adekvatan C++ kod...
[ alex @ 11.04.2002. 19:34 ] @
Citat:
leka:
Elem alex sećaš se da smo o tome pričali davno na IRC-u, o mojim mukama sa OutLook-om kao COM objektom...


Znam, secam se, ali ovo sto ja radim nema veze s tim sto smo pricali. Pretrazio sam i Codeproject i tamo nisam nasao resenje.

Citat:

Ukratko rad sa OutLookom se svodi na sledeće


Znam kako se radi sa OutLook objektom, uopste nije to problem. Nisam za dzaba proveo nekoliko dana citajuci Office Developer dokumentaciju.

Citat:

(e sad sledi ono što ti garant nisi uradio)
- olNs->Logon(sProfile, "", True, True); //olNs je pointer na NameSpace, a sProfile je string koji sadrži ime profila koji koristiš...
- kreiraš MailItem sa olApp->CreateItem(olMailItem);


Alo, covek, totalno si promasio odgovor na moju poruku! Prvo, nema nikakve potrebe za Logon-om jer radim DLL Add-In za Outlook, koji se startuje kada se startuje Outlook (ne zove se za dzaba Add-In), i dozvoljena mu je manipulacija sa kompletnim Outlook-om. A posto se sam Outlook loguje na profil moj Add-in samo nasledi Outlook.Application ili sta mu je vec potrebno i nastavi rad s njim.

Sledece, radim sa Parsiranjem maila, a ne sa kreiranjem i/ili slanjem maila. Moj Add-In pristupa Folders objektu Outlook-a, prodje kroz sve mail foldere (MAPIFolder objekat) i iz svakog MAPIFolder-a uzima MAPIFolder-Items. Zatim prolazi kroz Items sa Items->Item(i) i uzima sta je potrebno.

Ovde se radi o necemu sasvim drugom - SenderName vraca samo ime posiljaoca i to ako je u Contact listi. Ako nije, onda ne vraca nista.

Dakle, da ponovim jos jednom pitanje, posto ga nisi razumeo - potreban mi je nacin da od MailItem objekta dobijem posiljaoca poruke.

Jel sad jasnije??
[ alex @ 11.04.2002. 19:36 ] @
Zamolio bih ljude koji odgovaraju moje pitanje da, zapravo, i odgovore na moje pitanje, a ne na nesto sasvim deseto (kao sto je leka uradio)..

Hvala leko, ali to sto si napisao nije odgovor na moje pitanje.
[ leka @ 11.04.2002. 19:45 ] @
Jeste brate, nisam video... Nisam video da radiš add-in za OutLook... ALI, kad sam jurio rešenje svog problema nailazio sam na par URL-ova koji rade tako nešto što tebi treba. Verujem da si tražio po NET-u, nisi glup hvala Bogu, ali traži još malo jer ZNAM da sam nailazio na primere sa source-om koji rade bašt to što hoćeš! :) Sori, sve je u isključivo pozitivnim namerama da ti pomognem...
[ alex @ 11.04.2002. 20:17 ] @
Ma nema frke, nisam ni ja mislio da ostrije reagujem - odnosno mozda poruka lici da je ostrija ali mi stvarno nije bila namera da je takvom napisem ;)..

Elem, problem jos uvek stoji ;)...
[ leka @ 21.08.2002. 19:12 ] @
Danas sam surfao po http://www.planet-source-code.com (kul sajt) i naisao na jedan tekst (prilepicu ga uz poruku!) koji govori upravo o ovome Alex sto si ti pricao. Istina nisam duboko zalazio u tekst ali sam procitao par prvih paragrafa i onda se setio da si ti radio nesto slicno, pa rekoh da ti "ukazem" na ovaj tekst...

Skini ZIP i vidi jel to to. :)

Pozdrav care
[ alex @ 22.08.2002. 11:39 ] @
U medjuvremenu sam resio ovaj problem, ali sam naisao na jos par nedoumica koje mi ih je ovaj source bas otkrio.. Malopre sam, gledajuci ovaj source, sebi rekao "kako ti ovo nije palo na pamet".. Hehe, leko, hvala za source. Odlicno!

Poz,
alex.
[ leka @ 22.08.2002. 18:10 ] @
Ma sto bi rekla moja prijateljica Mira: Cim sam ga video, odmah sam ga spazio!