This project has moved. For the latest updates, please go here.

Winmail.dat attachments outside Outlook

Apr 12, 2013 at 11:11 AM
First: Great tool, i love NetOffice !!!

My problem: I am creating emails with attachments with netoffice and all works fine in the microsoft world. But on other email-apps like Thunderbird the attachment always appears as winmail.dat.
I know: there are thousands of articles on this issue. I have regarded this articles, set all to html on message type and converting attachments to html. Now if i create a mail in Outlook manually with a pdf as attachment all works fine: i can see the pdf in Thunderbird and the pdf is not ancapsulated as application/ms-tnef.
But if i create the message with NetOffice, the same pdf is transferred as winmail.dat. It seemes that the outlook-switch "convert attachments to html-format" is not regarded.

My code:
Outlook.MailItem MI = OutlookApplication.CreateItem(OlItemType.olMailItem) as Outlook.MailItem;
.BodyFormat = OlBodyFormat.olFormatHTML;
MI.Recipients.Add(MD.To);
MI.Subject = MD.Subject;
MI.Body = MD.Text;
foreach (String AttachmentPath in MD.Attachments)
MI.Attachments.Add(AttachmentPath);
MI.UserProperties.Add(MD.AktePath, OlUserPropertyType.olText);
MI.Display();

The addition of the Userproperty is needed for piping an information for mme, i don't believe this has an affect to the problem.
As you can see, i first disply the mail before sending. The user must send it manually after adding some text.

Is there a switch for avoiding the encapsulation in ms-tnef format ?
I am wondering that sendiing of the same pdf without netoffice is no problem.

Thanx you for your answers !!! Jochen Herz from germany
Coordinator
Apr 12, 2013 at 5:09 PM
sorry ich bin aufn freitag abend nich mehr in stimmung für englisch....

Ich hab leider keinen Schimmer was application/ms-tnef ist.
Wenn ich dich richtig verstehe geht das PDF Attachment verloren?
Ist der Code innerhalb eines Addins? Und welches Outlook verwendest du?
Ich würds mal nachstellen. Hast du Plain/Interop oder VSTO verwendet als das ganze funktioniert hat?

Sebastian
Apr 15, 2013 at 8:25 AM
Hallo Sebastian,

Meine Randdaten: Outlook 2010, anprogrammiert mit .Net 2.0

Das Problem (in Deutsch, ist mir auch lieber):

Outlook Mails sind sehr oft im propriätären RTF Format kodiert. Verschickt man solche Mails per Mail, so werden diese Daten in einem Attachment mit dem Namen Winmail.dat samt Formatierung verschickt und beim Empfänger wieder interpretiert. Hat man auf der Empfängerseite auch Outlook sieht man den RTF Text wieder mit allen Formatierungen und das Attachment ist nicht mehr sichtbar.
Empfängt man aber mit einem anderen Mail wie z.B. Thunderbird, so sieht man zwar den Plain Text der Mail aber auch das Attachment WinMail.Dat, dessen Info natürlich nicht interpretiert werden. Dies ist ein bekanntes Verfahren und es wird überall empfohlen daher in Plain Text oder HTML zu verfassen damit Winmail.dat nicht verschickt wird. Geht auch mit NetOffice auf diese Art problemlos aber nicht mehr mit Attachments:

Aber wenn ich eine Mail mit NetOffice erfasse und ein oder mehrere Attachment, egal welchen Typs, verfasse, so werden diese Attachments auch in einer WinMail-Dat gepackt und so verschickt. Ein Thunderbird-User sieht dann nur noch das Attachment winmail.dat und nicht mehr die eigentlichen Anhänge. Der Mimetype des Attachments ist dann das erwähnte Format application/ms-tnef

Verschicke ich eine Mail von Hand mit den gleichen Attachments so werden diese korrekt abgeschickt.
Es gibt in den Outlook Optionen einen Schalter, mit dem man angeben kann dass Attachment zuerst in HTML codiert werden sollen aber der Schalter zeigt keine Änderung.

Da ich bisher keine großen Probleme mit NetOffice gehabt habe, habe ich auch keine entsprechende VSTO-Implementierung im Vorfeld gehabt sondern mich an den NetOffice Demo-Code zum Verschicken einer Mail gehalten.

Also Mails mit Attachment zwischen Outlook Benutzern kein Problem, aber Outlook-Mails mit Anhang an z.B. Thunderbird-Benutzer zumindest bei mir scheinbar nicht möglich.
Ich kann das hier gerne zeigen und dich auf den Testrechner lassen oder sonstigen Testcode von dir hier ausführen.

Wäre klasse wenn es hier eine Lösung gibt, den eigentlich dürfte das Problem ja alle Outlooker treffen die hiermit Mails verschicken.

Vielen Dank, Jochen Herz (Durchwahl: 06241 / 935012)
Apr 15, 2013 at 8:25 AM

Hallo Sebastian,

Meine Randdaten: Outlook 2010, anprogrammiert mit .Net 2.0

Das Problem (in Deutsch J, ist mir auch lieber):

Outlook Mails sind sehr oft im propriätären RTF Format kodiert. Verschickt man solche Mails per Mail, so werden diese Daten in einem Attachment mit dem Namen Winmail.dat samt Formatierung verschickt und beim Empfänger wieder interpretiert. Hat man auf der Empfängerseite auch Outlook sieht man den RTF Text wieder mit allen Formatierungen und das Attachment ist nicht mehr sichtbar.

Empfängt man aber mit einem anderen Mail wie z.B. Thunderbird, so sieht man zwar den Plain Text der Mail aber auch das Attachment WinMail.Dat, dessen Info natürlich nicht interpretiert werden. Dies ist ein bekanntes Verfahren und es wird überall empfohlen daher in Plain Text oder HTML zu verfassen damit Winmail.dat nicht verschickt wird. Geht auch mit NetOffice auf diese Art problemlos aber nicht mehr mit Attachments:

Aber wenn ich eine Mail mit NetOffice erfasse und ein oder mehrere Attachment, egal welchen Typs, verfasse, so werden diese Attachments auch in einer WinMail-Dat gepackt und so verschickt. Ein Thunderbird-User sieht dann nur noch das Attachment winmail.dat und nicht mehr die eigentlichen Anhänge. Der Mimetype des Attachments ist dann das erwähnte Format application/ms-tnef

Verschicke ich eine Mail von Hand mit den gleichen Attachments so werden diese korrekt abgeschickt.

Es gibt in den Outlook Optionen einen Schalter, mit dem man angeben kann dass Attachment zuerst in HTML codiert werden sollen aber der Schalter zeigt keine Änderung.

Da ich bisher keine großen Probleme mit NetOffice gehabt habe, habe ich auch keine entsprechende VSTO-Implementierung im Vorfeld gehabt sondern mich an den NetOffice Demo-Code zum Verschicken einer Mail gehalten.

Also Mails mit Attachment zwischen Outlook Benutzern kein Problem, aber Outlook-Mails mit Anhang an z.B. Thunderbird-Benutzer zumindest bei mir scheinbar nicht möglich.

Ich kann das hier gerne zeigen und dich auf den Testrechner lassen oder sonstigen Testcode von dir hier ausführen.

Wäre klasse wenn es hier eine Lösung gibt, den eigentlich dürfte das Problem ja alle Outlooker treffen die hiermit Mails verschicken.

Vielen Dank, Jochen Herz (Durchwahl: 06241 / 935012)

Von: SebastianDotNet [email removed]
Gesendet: Freitag, 12. April 2013 19:09
An: [email removed]
Betreff: Re: Winmail.dat attachments outside Outlook [netoffice:440051]

From: SebastianDotNet

sorry ich bin aufn freitag abend nich mehr in stimmung für englisch....

Ich hab leider keinen Schimmer was application/ms-tnef ist.
Wenn ich dich richtig verstehe geht das PDF Attachment verloren?
Ist der Code innerhalb eines Addins? Und welches Outlook verwendest du?
Ich würds mal nachstellen. Hast du Plain/Interop oder VSTO verwendet als das ganze funktioniert hat?

Sebastian

Coordinator
Apr 15, 2013 at 1:21 PM
Ich habe leider keinen alternativen Mail-Client, private nutze ich OutlookXP. Ich habe jetzt mal folgenden Testcode 5x in verschiedenen Varianten an meine Web.de Adresse geschickt und das Ergebniss war immer okay             Outlook.MailItem mailItem =
outlookApplication.CreateItem(OlItemType.olMailItem) as Outlook.MailItem;             mailItem.BodyFormat = OlBodyFormat.olFormatHTML;              mailItem.Recipients.Add(textBoxReciever.Text);             mailItem.Subject = textBoxSubject.Text;            
//mailItem.Body = "test";             mailItem.HTMLBody = "
<p>&quot; &#43; &quot;Just a test&quot; &#43; &quot;</p> ";             mailItem.Attachments.Add("c:\test.xml");             mailItem.Send(); Kannst du das Problem auf einem web.de Account replizieren?   ________________________________
Apr 16, 2013 at 3:16 PM
Hello Sebastian,

i found the problem and want to post a workarround here for all who have this problem.

Your code was fine. But the difference was the line:
mailItem.UserProperties.Add("123/13", OlUserPropertyType.olText);
I am forced to give some data on the way so i can work with the mail in the event Item_send.
And: As soon i add a userproperty to a mail, Outlook 2010 creates a winmail.dat-file.
Unfortunately not only to transfer the property but it pushes all attachments also into the winmail.dat so non-outlook users can not use them.

First i tried to delete all UserProperties in the event before sending but this had no effect if i only delete them with:
while (MI.UserProperties.Count > 0)
    MI.UserProperties.Remove(1);
We must switch off the usage of the mimetype ms-tnef (which ist the content of the Winmail.dat). I found switches for this for mailmapi but i don't know how to use this with NetOffice without loosing the version-compatibility.

But if i set the following registry key, the transfer was fine also with userproperties:

Outlook 2010:
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Preferences]
"DisableTNEF"=dword:00000001

Please have a look at the version numbering in the path and use the version number of your outlook-version.

On my machine this works fine, tomorrow i will test it at the customer. If i have troubles there with this solution i will post ist here.

Thanx you for your help and your fantastic NetOffice!