Warsztat 2: Wysyłanie i odbieranie poczty z dowolnym załącznikiem, czyli... aplikacja pocztowa zrobiona w Accessie.

FMail2k.zip
Autor: Krzysztof Pozorek
Baza w formacie MsAccess 2000
261kB, 11-09-2002

FMail97.zip
Autor: Krzysztof Pozorek
Baza w formacie MsAccess 97
229kB, 11-09-2002

FMail2k_1.zip (wersja poprawiona!)
Autor: Krzysztof Pozorek
Baza w formacie MsAccess 2000
252kB, 26-11-2002

Programy zostały przygotowane na podstawie oryginalnych materiałów ze strony:
http://am.rusimport.ru/MsAccess/topic.asp?id=34.

Zasadnicze znaczenie w prezentowanych aplikacjach odgrywa biblioteka FreeMail.dll, którą napisał rosyjski programista Igor V. Makeev, natomiast wyszukał Michał (Mitch). Wymieniona biblioteka umożliwia odbiór i wysyłanie wiadomości e-mail z dowolnymi załącznikami bezpośrednio z Accessa, bez potrzeby korzystania z zewnętrznych programów pocztowych.

Biblioteka FreeMail.dll jest trzymana w bazie (w rekordzie tabeli) i kopiowana na dysk przy pierwszym uruchomieniu programu.

Opis problemu:

Możliwości pocztowe 'czystego' Accessa są mocno ograniczone. Szczególnie brakuje możliwości wysłania wiadomości e-mail z załącznikiem w postaci dowolnego pliku dyskowego.

Dostępne mechanizmy w postaci hiperlinków, protokółu mailto lub metody SendObject pozwalają jedynie wysłać wiadomość bez załącznika lub dołączyć obiekt bazy danych. Do realizacji tych zadań Access potrzebuje jednak jakiegoś zewnętrznego programu pocztowego. Niestety mniej popularne aplikacje tego typu nie zawsze pozwalają na takie wykorzystanie. Przykładem klienta pocztowego, który źle współpracuje z Accessem jest znany PMail. Co zrobić, gdy użytkownik nie chce używać innych, bardziej popularnych programów, z obawy przed ich małą odpornością na wirusy komputerowe? Czy wtedy już w ogóle nie mamy możliwości wysłać maila z naszej aplikacji, nawet bez załącznika?

Wprawdzie Access ma ubogie możliwości wysyłania maili, za to nie ma żadnych, wbudowanych funkcji do odczytu poczty.  Czy zatem naprawdę nie ma sposobu, aby za pomocą accessowej procedury przejrzeć poszczególne wiadomości w skrzynce, a w razie stwierdzenia oczekiwanego maila  - odebrać go, zapisać załącznik na dysku lokalnym i skasować z serwera niepotrzebną już wiadomość?

Rozwiązanie:

To już nie sztuczki i chwyty, ale prawdziwe czary! Okazuje się, że to wszystko jest możliwe i  w dodatku w samym Accessie, bez potrzeby korzystania z zewnętrznych programów pocztowych. Naciskamy przycisk polecenia, a w tle nasza baza łączy się z serwerem poczty i realizuje transmisję w sposób przeźroczysty, niewidoczny dla użytkownika.

Przykłady, zawarte w archiwach FMail97.zip i FMail2k.zip, prezentują wymienione możliwości w praktyce. Każdy z tych programów, to prosta aplikacja pocztowa napisana w Accessie. W obu programach wykorzystywana jest biblioteka FreeMail.dll, która zgodnie z decyzją autora i ku radości rzeszy accessowców: "jawliaetsja bezpłatnoj i swobodno raspostranjajemoj" - jest bezpłatna i przeznaczona do swobodnego rozpowszechniania. Dzięki, Igor.

Wersja poprawiona!:

Autor biblioteki FreeMail.dll, Igor V. Makeev, udostępnił jej nową, poprawioną wersję. Umożliwiło to przygotowanie programu accessowego, który nie wiesza się już przy kasowaniu wiadomości oraz nie powiela już niepotrzebnie wierszy w treści maila.

Jako nowość, autor dodatkowo wprowadził możliwość łączenia się z serwerami, które wymagają autoryzacji. Dotychczas nie było to możliwe.

Duże podziękowania składam osobie, która mam wrażenie, przyczyniła się do opracowania poprawnej wersji biblioteki. Donat Dubiel(donatdubiel@poczta.onet.pl) drążył temat, prowadząc korespondencję z autorem biblioteki FreeMail.dll w celu usunięcia błędów.