Mail.ParseTNEF Method

Parses the winmail.dat (TNEF attachment).

[Visual Basic]
Public Function ParseTNEF( _
    data() As Byte, _
    includeRTFBody As Boolean 
) As Attachment()
public Attachment[] ParseTNEF(
    byte[] data,
    bool includeRTFBody
public: array<Attachment^> ParseTNEF(
    array<unsigned char> data,
    bool includeRTFBody
public function ParseTNEF(
    data : Byte[],
    includeRTFBody : Boolean
) : Attachment[];


The binary data of winmail.dat
If this parameter is false, the return value (array) doesn't contain the RTF body; If this parameter is true, the return value (array) contains the RTF body as an attachment.

Return Value

A Attachment array containing all files in winmail.dat (TNEF).


[Visual Basic, C#] The following example demonstrates how to deal with the winmail.dat attachment. To get the full samples of EAGetMail, please refer to Samples section.

[VB - Parse winmail.dat (TNEF)]

Dim oMail As New Mail("TryIt")
oMail.Load("c:\test.eml", False)
Dim atts() As Attachment = oMail.Attachments
Dim tempFolder As String = "c:\temp"
Dim count As Integer = atts.Length
If (Not System.IO.Directory.Exists(tempFolder)) Then
End If

For i As Integer = 0 To count - 1
    Dim att As Attachment = atts(i)
    'this attachment is in OUTLOOK RTF format, decode it here.
    If (String.Compare(att.Name, "winmail.dat") = 0) Then
        Dim tatts() As Attachment
            tatts = Mail.ParseTNEF(att.Content, True)
            Dim y As Integer = tatts.Length
            For x As Integer = 0 To y - 1
                Dim tatt As Attachment = tatts(x)
                Dim tattname As String = String.Format("{0}\{1}", tempFolder, tatt.Name)
                tatt.SaveAs(tattname, True) 
        Catch ep As Exception
        End Try
        Dim attname As String = String.Format("{0}\{1}", tempFolder, att.Name)
        att.SaveAs(attname, True)
    End If

[C# - Parse winmail.dat (TNEF)] Mail oMail = new Mail("TryIt"); oMail.Load("c:\\test.eml", false); Attachment [] atts = oMail.Attachments; int count = atts.Length; string tempFolder = "c:\\temp"; if(!System.IO.Directory.Exists(tempFolder)) System.IO.Directory.CreateDirectory(tempFolder); for(int i = 0; i < count; i++) { Attachment att = atts[i]; //this attachment is in OUTLOOK RTF format, decode it here. if(String.Compare(att.Name, "winmail.dat") == 0) { Attachment[] tatts = null; try { tatts = Mail.ParseTNEF(att.Content, true); } catch(Exception ep) { MessageBox.Show(ep.Message); continue; } int y = tatts.Length; for(int x = 0; x < y; x++) { Attachment tatt = tatts[x]; string tattname = String.Format("{0}\\{1}", tempFolder, tatt.Name); tatt.SaveAs(tattname , true); } continue; } string attname = String.Format("{0}\\{1}", tempFolder, att.Name); att.SaveAs(attname , true); }


When an Outlook user composes and sends a message using either Rich Text Format or HTML Format, Outlook automagically generates a file, winmail.dat, and attaches it to the end of the email. The winmail.dat contains the rich text body and original attachments. EAGetMail provides the TNEF parser to decode the winmail.dat. With this feature, you application has the highly compatibility with the outlook email.
If you just want to decode winmail.dat in current mail instance, please use Mail.DecodeTNEF Method instead of ParseTNEF method.

See Also

Mail.DecodeTNEF Method

Online Tutorials

Parse Email in C# - Tutorial
Parse winmail.dat(TNEF) in C# - Tutorial
Parse Email in VB.NET - Tutorial
Parse winmail.dat(TNEF) in VB.NET - Tutorial
Parse Email in C++/CLI - Tutorial
Parse winmail.dat(TNEF) in C++/CLI - Tutorial