Es kann bei der Benutzung von Outlook vorkommen, dass Anhänge nicht wie gewünscht als Dateianhang sondern als verschlüsselte Datei namens „winmail.dat“ versendet werden. Das Problem taucht hauptsächlich dann auf, wenn vom Sender Outlook und vom Empfänger nicht Outlook benutzt wird.
Das Problem im Detail
Die folgenden Erläuterungen beziehen sich hauptsächlich auf Outlook 2003. Das Problem gibt es aber auch schon unter Outlook 2000, Outlook 2002 und es besteht auch noch bei Outlook 2007. Die Bilder zeigen Outlook 2002 bzw. 2007. Bei den anderen Versionen gibt es aber fast identische Menüpunkte.
Wenn eine Email über Outlook versendet wird, dann gibt es drei Möglichkeiten für das Format der Email.
- Nur Text
- Outlook Richtext
- HTML
Werden Mails im Nur Text und im HTML Format gesendet gibt es keine Probleme mit winmail.dat. Im Outlook Richtext Format sieht ein Dateianhang in webbasierten Oberflächen bzw. anderen Emailprogrammen so aus:
Das Funktionsmonster Outlook wartet mit unübersichtlichen Einstellmöglichkeiten zum Sendeformat auf.
Es gibt eine globale Einstellmöglichkeit:
Diese Einstellmöglichkeit ist gleichzeitig die Standardeinstellung für neu eingegebene Kontakte. Da Outlook mehr als Outlook Express bietet, kann man für jeden Kontakt einzeln angeben in welchem Format man Emails senden möchte…
Drei Lösungsmöglichkeiten für das Problem
- Man kann die Winmail.dat Datei online z.B. hier entschlüsseln. Dieses ist die kurzfristigste Lösung. Allerdings kann es Probleme mit großen Anhängen und langsamen Internetverbindungen geben. Vertrauliche Daten sollten außerdem nicht unbedingt über diesen Weg entschlüsselt werden.
- Alternativ kann man sich auch zum Beispiel diese Software herunter laden. Diese Möglichkeit ist die mittelfristige Lösung des Problems.
- Im Endeffekt sollt man Mails generell im Nur Text Format versenden. Diese Lösung gebe ich als dritte Lösung an, da es bei einer großen Anzahl von Kontakten nicht einfach ist alle gleichzeitig (mit wenigen Klicks) umzustellen.
Versendung der Mails im Nur Text Format
Auch hier gibt es zwei Möglichkeiten:
- manuelle Umstellung des Sendeformates für bereits vorhandene Kontakte
- Umstellung des Sendeformates für alle vorhandenen Kontakte
Das manuelle Umstellen sollte, wenn man den Text bis hier aufmerksam gelesen hat, kein Problem darstellen. Ich beschreibe im Folgenden das Umstellen des Sendeformates für alle vorhandenen Outlook-Kontakte.
Zuerst sollte man die globale Einstellung des Sendeformats auf „nur Text“ stellen. Auch das „Internetformat“ (Einstellung des einzelnen Kontaktes) muss entsprechend geändert werden.
Den Erfolg der neuen Einstellung kann man kontrollieren wenn bei einem neu eingegebenen Kontakt bei den Outlook-Eigenschaften (Rechtsklick auf die Email-Adresse) das Internetformat standardmäßig auf „Als Nur-Text senden“ bzw. „Outlook wählt das optimale Sendeformat“ steht.
Wenn das der Fall ist muss man „nur noch“ für alle Kontakte das Sendeformat umstellen. Da es diese Funktion in Outlook nicht gibt, habe ich mir eine Möglichkeit über VBA überlegt, die für mich funktioniert hat.
Ich übernehme keine Verantwortung für die Funktion. Bitte legen Sie ein Backup ihrer Outlook-Daten an bevor sie die nachfolgend beschriebenen VBA Routinen ausprobieren.
In Outlook erstellt man ein VBA Makro mit folgendem Code (siehe Anlage):
Public Sub testContact()
Dim contact As ContactItem
If MsgBox(„Funktion starten?“, vbYesNo) = vbYes Then
For Each contact In Application.ActiveExplorer.Selection
contact.Email1Address = contact.Email1Address & “ „
contact.Email2Address = contact.Email2Address & “ „
contact.Email3Address = contact.Email3Address & “ „
contact.Email1Address = Strings.Left(contact.Email1Address, Strings.Len(contact.Email1Address) – 1)
contact.Email2Address = Strings.Left(contact.Email2Address, Strings.Len(contact.Email2Address) – 1)
contact.Email3Address = Strings.Left(contact.Email3Address, Strings.Len(contact.Email3Address) – 1)
contact.Close olSave
Next
Else
‚Funktion wird nicht gestartet.
End If
End Sub
Das Makro bearbeitet alle ausgewählten Kontakte und setzt hinter jede Email-Adresse ein Leerzeichen und löscht dieses wieder – damit Outlook die Änderungen registriert – und speichert die Kontakte ab. Damit werden aus vorhandenen Kontakten „neue Kontakte“ und die Standardeinstellungen des Internetformates werden übernommen. Das ist ein blöder Trick, aber er funktioniert. So spart man sich das manuelle Ändern der Einstellung bei hunderten Kontakten und möglicherweise mehreren Email Adressen pro Kontakt.
Verteilerlisten (1. Nachtrag):
Wenn in der Auswahl Verteilerlisten enthalten sind, dann führt das zu einer Fehlermeldung: „Laufzeitfehler 13: Typen unverträglich.„
Durch die Änderung des oben genannten Codes wird eine Meldung ausgegeben wenn eine Verteilerliste in der Auswahl enthalten ist und es erfolgt kein Abbruch des Makros:
Public Sub testContact()
Dim contact As ContactItem
If MsgBox(„Funktion starten?“, vbYesNo) = vbYes Then
On Error Resume Next
For Each contact In Application.ActiveExplorer.Selection
If contact.ItemProperties.Class = olDistributionList Then
MsgBox „Kann Verteilerlisten nicht verarbeiten“
End If
If contact.ItemProperties.Class = olMail Then
contact.Email1Address = contact.Email1Address & “ „
contact.Email2Address = contact.Email2Address & “ „
contact.Email3Address = contact.Email3Address & “ „
contact.Email1Address = Strings.Left(contact.Email1Address, Strings.Len(contact.Email1Address) – 1)
contact.Email2Address = Strings.Left(contact.Email2Address, Strings.Len(contact.Email2Address) – 1)
contact.Email3Address = Strings.Left(contact.Email3Address, Strings.Len(contact.Email3Address) – 1)
contact.Close olSave
End If
Next
Else
‚Funktion wird nicht gestartet.
End If
End Sub
Fehlerbehandlung (2. Nachtrag):
Falls Fehlermeldungen bei der Änderung der Kontakte mit dem oben aufgeführten Makro auftreten habe ich hier noch eine Version mit „Fehlerbehandlung“. Sollte ein Fehler auftauchen wird eine Fehlernummer, eine Beschreibung und die Nummer des Elementes in der Markierung ausgegeben bei dem der Fehler auftritt.
Public Sub testContact()
Dim contact As ContactItem
Dim anzahl As Integer
If MsgBox(„Funktion starten?“, vbYesNo) = vbYes Then
anzahl = 1
On Error GoTo fehler
For Each contact In Application.ActiveExplorer.Selection
If contact.ItemProperties.Class = olMail Then
contact.Email1Address = contact.Email1Address & “ „
contact.Email2Address = contact.Email2Address & “ „
contact.Email3Address = contact.Email3Address & “ „
contact.Email1Address = Strings.Left(contact.Email1Address, Strings.Len(contact.Email1Address) – 1)
contact.Email2Address = Strings.Left(contact.Email2Address, Strings.Len(contact.Email2Address) – 1)
contact.Email3Address = Strings.Left(contact.Email3Address, Strings.Len(contact.Email3Address) – 1)
contact.Close olSave
End If
anzahl = anzahl + 1
Next
Else
‚Funktion wird nicht gestartet.
End If
Exit Sub
fehler:
MsgBox „Es ist der Fehler Nr. “ & Err.Number & “ mit der Beschreibung : “ & Err.Description & “ bei der Bearbeitung des Elements „
MsgBox „Das “ & anzahl & „te Element in der Markierung konnte nicht verarbeitet werden.“
End Sub