
Odpowiadanie na wiadomości zawsze w formacie tekstowym
Artykuł dotyczy: Microsoft Outlook 2002/2003/2007
W Microsoft Office Outlook nie ma możliwości skonfigurowania ustawień programu tak, aby przy odpowiadaniu na wiadomość, która jest w formacie zwykłego tekstu lub HTML, odpowiedź tworzona była zawsze w formacie tekstowym. Opcja ta jest znana użytkownikom na przykład programu Outlook Express. Po wybraniu w menu "Narzędzia | Opcje" w ustawieniach programu na zakładce "Wysyłanie" wystarczy odznaczyć opcję "Odpowiedz na wiadomości używając formatu, w jakim zostały wysłane", a odpowiedzi na wiadomości będą tworzone zawsze w formacie zwykłego tekstu lub HTML, w zależności od tego jaka opcja jest wybrana w sekcji "Format wysyłania poczty" (na tej samej zakładce "Wysyłanie").
Tego typu opcji brakuje niestety w Microsoft Outlook, który tworzy odpowiedź zawsze w takim formacie, w jakim jest oryginalna wiadomość. Można co najwyżej w ustawieniach zaznaczyć opcję "Czytaj całą standardową pocztę jako zwykły tekst" ("Narzędzia | Opcje | Opcje e-mail") (opcji tej nie ma w Outlook 2007). Wtedy wszystkie wiadomości, nawet te w formacie HTML, będą przez Outlook'a wyświetlane w formacie zwykłego tekstu i taki też format będą miały odpowiedzi na te wiadomości. Nie jest to jednak rozwiązanie idealne, ponieważ zazwyczaj użytkownik chciałby, aby wiadomości w formacie HTML były wyświetlane jako HTML.
Problem ten można rozwiązać przy użyciu makra, którego kod można znaleźć poniżej. Makro używa zdarzeń Outlook'a w celu wykrycia momentu, gdy użytkownik wywołuje dla wiadomości polecenie "Odpowiedz" (*3). Akcja użytkownika jest wtedy anulowana (*4), a tworzona jest nowa odpowiedź przy użyciu formatu tekstowego (*5). Makro działa w ten sam sposób także dla akcji "Odpowiedz wszystkim" oraz "Prześlij dalej". Jeśli nie ma potrzeby obsługi tych zdarzeń wystarczy usunąć z makra funckje oItem_ReplyAll (*6) oraz oItem_Forward (*7). Jeśli ktoś chce, aby odpowiedzi były zawsze tworzone w formacie HTML zamiast zwykłego tekstu, należy w kodzie makra usunąć linię oznaczoną jako (*1) i odkomentować linię (*2). Makro nie działa w Microsoft Outlook 2000, ponieważ obiekt MailItem nie posiada tam właściwości BodyFormat i nie ma możliwości zmiany formatu wiadomości.
Ponieważ makro używa zdarzeń Outlook'a jego kod musi zostać umieszczony w edytorze Visual Basic w module "ThisOutlookSession". Makro uruchamiane jest już przy starcie Outlook'a. Aby Outlook nie wyświetlał za każdym razem ostrzeżenia o zabezpieczeniach, należy podpisać projekt Visual Basic lub ustawić zabezpieczenia makr na "Niskie".
Option Explicit Private WithEvents oExpl As Explorer Private WithEvents oItem As MailItem Private bDiscardEvents As Boolean Private olFormat As OlBodyFormat Private Sub Application_Startup() Set oExpl = Application.ActiveExplorer bDiscardEvents = False olFormat = olFormatPlain '(*1) - używaj zawsze formatu "zwykły tekst" 'olFormat = olFormatHTML '(*2) - używaj zawsze formatu HTML End Sub Private Sub oExpl_SelectionChange() On Error Resume Next Set oItem = oExpl.Selection.item(1) End Sub ' (*3) Użytkownik wybrał polecenie "Odpowiedz" Private Sub oItem_Reply(ByVal Response As Object, Cancel As Boolean) If bDiscardEvents Or oItem.BodyFormat = olFormat Then Exit Sub End If '(*4) Anuluj domyślną akcję Cancel = True bDiscardEvents = True ' (*5) Utwórz odpowiedź na wiadomość w formacie tekstowym Dim oResponse As MailItem Set oResponse = oItem.Reply oResponse.BodyFormat = olFormat oResponse.Display bDiscardEvents = False End Sub ' (*6) Użytkownik wybrał polecenie "Odpowiedz wszystkim" Private Sub oItem_ReplyAll(ByVal Response As Object, Cancel As Boolean) If bDiscardEvents Or oItem.BodyFormat = olFormat Then Exit Sub End If Cancel = True bDiscardEvents = True Dim oResponse As MailItem Set oResponse = oItem.ReplyAll oResponse.BodyFormat = olFormat oResponse.Display bDiscardEvents = False End Sub ' (*7) Użytkownik wybrał polecenie "Prześlij dalej" Private Sub oItem_Forward(ByVal Forward As Object, Cancel As Boolean) If bDiscardEvents Or oItem.BodyFormat = olFormat Then Exit Sub End If Cancel = True bDiscardEvents = True Dim oResponse As MailItem Set oResponse = oItem.Forward oResponse.BodyFormat = olFormat oResponse.Display bDiscardEvents = False End Sub
Jeśli masz jakieś pytania lub komentarze dotyczące tego artykułu, napisz na naszym forum.
(c) CodeTwo. Wszelkie prawa zastrzeżone.
© Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.