ivan
  • ivan
  • 100% (Exalted)
  • Administration Topic Starter
14 years ago
Visual Basic.NET Example Code

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. To parse winmail.dat (TNEF stream) file, we should use ParseTNEF method.


' The following example codes demonstrate parsing winmail.dat - TNEF stream
' To get full sample projects, please download and install EAGetMail on your machine.
' To run it correctly, please change email server, user, password, folder, file name value to yours

Imports System.Collections 
Imports System.Text 
Imports System.IO 

' Imports EAGetMail namespace
Imports EAGetMail 

Module Module1 
    Private Sub ParseEmail(ByVal emlFile As String) 
        Dim oMail As New Mail("TryIt") 
        oMail.Load(emlFile, False) 

        If oMail.IsEncrypted Then 
            Try 
                ' This email is encrypted, we decrypt it by user default certificate.
                ' you can also use specified certificate like this
                ' Dim oCert As New Certificate()
                ' oCert.Load("c:\test.pfx", "pfxpassword", _
                ' Certificate.CertificateKeyLocation.CRYPT_USER_KEYSET)
                ' oMail = oMail.Decrypt( oCert )
                oMail = oMail.Decrypt(Nothing) 
            Catch ep As Exception 
                Console.WriteLine(ep.Message) 
            End Try 
        End If 

        If oMail.IsSigned Then 
            Try 
                ' This email is digital signed.
                Dim cert As EAGetMail.Certificate = oMail.VerifySignature() 
                ' You can add the certificate to your certificate storage like this
                ' cert.AddToStore( _
                ' Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER, _
                ' "addressbook" )
                ' then you can use send the encrypted email back to this sender.
                Console.WriteLine("This email contains a valid digital signature.") 
            Catch ep As Exception 
                Console.WriteLine(ep.Message) 
            End Try 
        End If 

        ' Parse Mail From/Sender
        Console.WriteLine("From: {0}", oMail.From.ToString()) 

        ' Parse Mail To/Recipient
        Dim addrs As MailAddress() = oMail.[To] 
        For i As Integer = 0 To addrs.Length - 1 
            Console.WriteLine("To: {0}", addrs(i).ToString()) 
        Next 

        ' Parse Mail CC
        addrs = oMail.Cc 
        For i As Integer = 0 To addrs.Length - 1 
            Console.WriteLine("To: {0}", addrs(i).ToString()) 
        Next 

        ' Parse Mail Subject
        Console.WriteLine("Subject: {0}", oMail.Subject) 

        ' Parse Mail Text/Plain body
        Console.WriteLine("TextBody: {0}", oMail.TextBody) 

        ' Parse Mail Html Body
        Console.WriteLine("HtmlBody: {0}", oMail.HtmlBody) 

        ' Parse Attachments
        Dim atts As Attachment() = oMail.Attachments 
        For i As Integer = 0 To atts.Length - 1 
            Dim att As Attachment = atts(i) 

            ' This attachment is in OUTLOOK RTF format(TNEF), decode it here.
            If [String].Compare(att.Name, "winmail.dat") = 0 Then 
                Dim tatts As Attachment() = Nothing 
                Try 
                    tatts = Mail.ParseTNEF(att.Content, True) 
                Catch ep As Exception 
                    Console.WriteLine(ep.Message) 
                End Try 

                Dim y As Integer = tatts.Length 
                For x As Integer = 0 To y - 1 
                    Dim tatt As Attachment = tatts(x) 
                    Console.WriteLine("winmail.dat: {0}", tatt.Name) 
                Next 
                Continue For 
            End If 
            Console.WriteLine("Attachment: {0}", att.Name) 
        Next 
    End Sub 

    Sub Main() 

        ParseEmail("c:\my folder\test.eml") 

    End Sub 
End Module 
Click here to read original topic - full version ... 

If you have any comments or questions about above example codes, please add your comments here.

EXPLORE TUTORIALS

© All Rights Reserved, AIFEI Software Limited & AdminSystem Software Limited.