Skip to main content

Fixing winmail.dat problem - specifically in Quickbooks

For months we have had problems with attachments from Quickbooks. Having looked down many avenues I think we have found a fix or few: (See below for update)

Here are a few websites that help out:

Microsoft Outlook/Exchange MS-TNEF handling (aka "Winmail.dat", "Win.dat", or "Part 1.2" problem of unopenable email attachments)

KB958012 : When you use Outlook 2007 to send an e-mail message, the recipient of the message sees an attachment that is called Winmail.dat

Essentially the summary is that there is a problem with Outlook trying to force Rich Text Format. so you need to turn that off. Mail users not receiving email in an Outlook derivative will have a problem. This format is called

  1. Go into Outlook
  2. On the "Tools" menu, click "Options", then click the "Mail Format" tab, and then the "Internet Format" button.
  3. Set "When sending Outlook Rich Text messages to Internet ..." to either "Convert to HTML format" or "Convert to Plain Text format".
If you prefer, in all versions of Outlook, you can disable TNEF completely:
  1. On the "Tools" menu, click "Options", and then click the "Mail Format" tab.
  2. In the "Send in this message format" list, click "Plain Text" or "HTML", and then click "OK".

Mac users?

Apparently this is a well documented problem and there is an decoder for it here: TNEF’s Enough. You can read about it here: Open winmail.dat files on a Mac

Read all about it from MacForm:

Additional Update: July 2011

So still not everyone getting the attachments, and it appears that it is exclusively the Mac users. But there is one other tweak that I had to do:

Tweak on the run:
After QuickBooks launches the new email in Outlook:
  • right click on the email address that is affected, click "Send Options"
  • the select "I want to specify the format..."
  • select "Plain Text"
And that you 

A little more perminent:
save the email address in your Outlook Address book, and repeat the steps

For the rest of the recipients

  • create a gmail account, 
  • forward the email you sent to the recipient from sent items to that gmail account
  • Log into the gmail account, and 
  • using the email address in the email you forwarded
  • forward the email to the recipient.
I am going to fiddle to see if there is some gmail rule you can tweak.

I have another update.

A fix that works

If you are still not sorted then, Here is a fix for sending the invoices / statements. The problem appears to be the SMTP server you are routing through. So my solution was to create a gmail address, I then routed the emails in the GMAIL.COM setting to be forwarded back to my address. Then I added an account to Outlook (or a new profile, depending on the version) and it uses the Google SMTP to send email. I changed the reply address to, and it works fine. In Outlook 2010 you are able to switch between the SMTP accounts, so I set the alternative address up. and then when clients complain I go into sent Items and send again but change the from address and it works fine.


Popular posts from this blog

SMTP servers of South Africa

SMTP Settings Below is a list of SMTP sites in South Africa, using this and the ISP Map you can try and find which one works best for you. Telkom (ADSL) (56k dial up) Internet Solutions (ADSL) (56k dial up on IS) (3g backbone) Vodacom MTN Cell C (GPRS) (also used by Virgin) ABSA iBurst @lantic (ADSL,Dialup, ISDN) Sentech MWEB (ADSL) - this is to be retired End June 2012, use below instead (56k dial-up & ADSL & business) iAfrica Neotel Tiscali NOW MWeb Netactive NOW MWeb Global Hertzner Use y

Programmatically send email in Access using VBA and Outlook

When I first wrote my early Access system I used a function I setup in Outlook and then I called that. On upgrading I had a few problems with the older method then I found some help on the MSDN website here... and the related video. The first thing to do before starting the code is go into access, access the VBA (press Ctl+G) then click on "Tools" The "References" and then make sure you scroll down to "Microsoft Outlook ..." the version there will be determined by what version you have installed. This the code that I ended up with after looking at the site above Private olApp As Outlook.Application Private olNameSpace As Outlook.NameSpace ' The basics of this from MSDN site ' Private Sub InitOutlook()  ' Initialize a session in Outlook   Set olApp = New Outlook.Application   'Return a reference to the MAPI layer   Set olNameSpace = olApp.GetNamespace("MA