Zapisanie całego maila (.msg) do tabeli - jak?

Pytania, problemy, uwagi związane ze starszymi wersjami Microsoft Outlook 2003, 2002 (XP), 2000, 98

Moderator: Moderatorzy

Zapisanie całego maila (.msg) do tabeli - jak?

Postprzez pzpr2007 » Śr 14.11.2007 13:58

Potrzebuję archiwizować wszystkie przychodzące maile w tabeli SQL (lub MS Access).
Nie wchodzi w grę linkowanie do plików na dysku - chodzi o osadzenie plików .msg w tabeli.
Tylko jak to zrobić wprost z kodu VB Outlook'a? -oto jest pytanie!

Na razie robię to uruchamiając zdalnie makro w access'ie, które otwiera formularz access'owy,
pobiera z foldera pliki .msg (zapisane uprzednio przez outlook'a),
wkleja je do formularza (do ramki obiektu powiązanej z konkretnym polem
połączonej tabeli SQL) i zamyka formularz.
Wiem jak to brzmi, ale ciekaw jestem czy ktoś znajdzie coś lepszego.

Można oczywiście pobierać plik .msg i zapisać go do tabeli jako
ciąg binarny (do pola BLOB), a w sąsiednich polach zapisywać nazwę pliku
i rozszerzenie, ale otworzyć to póżniej? - katorga!
Natomiast wklejanie opisane wyżej (z pośrednictwem formularza)
tworzy w tabeli tzw. pakiet, który MS Access elegancko wyświetla
w formularzach i otwiera dwuklikiem. A może jest jakiś sposób na
osadzenie w tabeli takiego pakietu bez otwierania formularza?
Naprawde szukałem długo i nie znalazłem jak z poziomu VB utworzyć
pakiet programu Windows Object Packager.

Pomóżcie koledzy, bo się poddam... :roll:
pzpr2007
 
Posty: 13
Dołączył(a): Cz 25.10.2007 10:29

Postprzez OShon » Śr 14.11.2007 19:10

Zastanawiam się po co mieszasz do tego Formularz (forme)
ona jest do prezentacji danych lub do jej klepania na piechotę.
Dane wiadomości pakuj bezpośrednio do tabel w ACC.
Obrazek
Oskar Shon - MVP Office Dev. 11/20, 3x MCC, 4/9/22 TechNet
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 10448
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Postprzez pzpr2007 » Śr 14.11.2007 22:44

Super, tylko jak? Jeszcze z zapisaniem danych do tabeli jako ciąg binarny
bym sobie poradził, ale jako pakiet - to już nie.
Chętnie bym zrezygnował z formularza i w ogóle z pośrednictwa dysku twardego - tylko jak?
Jak zapisać całego maila (.msg) do tabeli wprost z kodu VB Outlook'a?
Ewentualnie mógłby być ciąg binarny (metodą appendchunk), ale jak go potem
wyświetlić (otworzyć) bez pośrednictwa dysku twardego? (nie znam się na serwerach OLE).
Poproszę o jakiś przykład kodu VB.
pzpr2007
 
Posty: 13
Dołączył(a): Cz 25.10.2007 10:29

Postprzez michu » Cz 15.11.2007 08:03

A nie możesz potem w Access napisać sobie jakąś funkcję do otwierania MSG? Funkcja będzie najpierw zrzucać bloba do pliku a potem go otwierać.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez pzpr2007 » Cz 15.11.2007 11:23

Rozumiem, że rezygnujemy z tych pakietów... szkoda.
A co do otwierania pliku zapisanego z tabeli to... - pośrednictwo dysku twardego mnie nie cieszy.
W takim razie może chociaż jak zapisać do tabeli plik .msg wprost z kodu VB Outlook'a -
- bez uprzedniego tworzenia pliku .msg na dysku twardym.

Czy to jest w ogóle możliwe?
(z załącznikami chyba nie byłoby problemu, bo mamy właściwość attachment obiektu MailItem -
- chyba, że to nie jest ciąg binarny, a tylko nazwa załącznika - nie sprawdzałem tego).
Ostatnio edytowano Cz 15.11.2007 12:43 przez pzpr2007, łącznie edytowano 1 raz
pzpr2007
 
Posty: 13
Dołączył(a): Cz 25.10.2007 10:29

Postprzez OShon » Cz 15.11.2007 12:08

pzpr2007 napisał(a):mamy właściwość obiektu MailItem

no i właśnie o to chodzi
Na forum masz info jak wywołać procedurę po otrzymaniu maila
potem rozbierasz go na części i każdy z obiektów Item wysyłasz selektem INTO do ACC.
Wszystko to wykonujesz w tle i finito
Wymagane jest tylko aby był stały dostęp do bazy danych, jeśli nie to możesz to wrzucać lokalnie np na dysk pod jakimś TXT a następnie wysłać go inną procedurką po uzyskaniu połączenia jako dopełnienie.

Potem jak już masz w tabelach to możesz sobie oglądać formularzem ograniczając wpisy :P
Obrazek
Oskar Shon - MVP Office Dev. 11/20, 3x MCC, 4/9/22 TechNet
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 10448
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Postprzez pzpr2007 » Cz 15.11.2007 12:42

Polecenie: insert into tabela_acc values ('" & msg.attachment & "') zapisuje tylko nazwę pliku załącznika, a nie załącznik.
O ile się orientuję to outlook w żadnym obiekcie 'nie podaje' ani całego maila (jako ciąg binarny),
ani załączników - wyłącznie nazwy tych plików, a to oznacza, że trzeba najpierw
zapisać te pliki na dysku [msg.SaveAs (path) lub attach.SaveAsFile (path)],
a potem procedurką pobrać je do tabeli access'owej. Czy dobrze myślę?

Przypomnę, ze zależy mi na zarchiwizowaniu całego mail'a w jednym pliku osadzonym w tabeli
(bez pośrednictwa dysku twardego i najlepiej jako pakiet, a nie ciąg binarny).
pzpr2007
 
Posty: 13
Dołączył(a): Cz 25.10.2007 10:29

Postprzez OShon » Cz 15.11.2007 15:19

pzpr2007 napisał(a):Polecenie: insert into tabela_acc values ('" & msg.attachment & "') zapisuje tylko nazwę pliku załącznika, a nie załącznik.

czekaj czekaj - ty nie chcesz zapisywać w tabeli maili (od kogo, do kogo, tytuł, tresc itd..) ale same załaczniki ?

bo już sie pogubiłem..

pzpr2007 napisał(a):zależy mi na zarchiwizowaniu całego mail'a w jednym pliku osadzonym w tabeli


jeśli tak to możesz zapisać całego MSG na dysku a potem go wysłać na serwer, a w ACC podać tylko ścieżkę do niego oraz dane niezbędne do wyszukania go z dyspozytorium.
Procedurke opisał Michu http://www.outlook.pl/forum/viewtopic.php?t=601&highlight=msg
Ostatnio edytowano Cz 15.11.2007 15:29 przez OShon, łącznie edytowano 1 raz
Obrazek
Oskar Shon - MVP Office Dev. 11/20, 3x MCC, 4/9/22 TechNet
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 10448
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Postprzez pzpr2007 » Cz 15.11.2007 15:25

Tak. Chcę osadzać (nie linkować) w tabeli pliki załączników i/lub pliki .msg zawierające całe mail'e. :)
pzpr2007
 
Posty: 13
Dołączył(a): Cz 25.10.2007 10:29

Postprzez OShon » Cz 15.11.2007 15:35

Niestety nie wiem jak osadzać całe pliki w ACC,
może pod postacią jakiejś dodatkowej kontrolki.

Nie wykluczone że da sie magazynować przy jej pomocy załączniki ...
temat raczej na http://www.coderscity.net/forum7.html
Obrazek
Oskar Shon - MVP Office Dev. 11/20, 3x MCC, 4/9/22 TechNet
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 10448
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Postprzez pzpr2007 » Cz 15.11.2007 15:40

OK. Przeszukam dokładniej tamto forum. Dzięki za zaangażowanie! :)
pzpr2007
 
Posty: 13
Dołączył(a): Cz 25.10.2007 10:29


Powrót do Microsoft Outlook

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 9 gości