The downloadMail script is having trouble download a specific message (see attached).

The error is:

MySQL Error:<br/> Incorrect string value: '\xC2 \xE2\x80\x94 ...' for column 'headers' at row 1

Any thoughts?

Thank you


email-source.txt 5K

By Damon - October 24, 2013


I see your Support Ticket email so I will reply to that one for now and post back here after the issue is resolved.

Damon Edis -

Hire me! Save time by getting our experts to help with your project.

Thank you

By Dave - November 14, 2013

Hi BrownLeather, 

I've patched your Download Mail on your server so that it is working now and I'll have an update for Download Mail out shortly that includes this new patch and some other code improvements.

Here's the patch I applied, in downloadMail.php in _getMessagePartData function on line 299 I replaced this:

$headers = imap_fetchbody($mbox, $msgno, 0);

With this code:

// get headers
$headers = imap_fetchbody($mbox, $msgno, 0);
$headers = _mb_convert_to_utf8($headers, @$params['charset'], $GLOBALS['DOWNLOAD_MAIL_DEFAULT_CHARSET']); // see below
// NOTE: Above line converts headers to UTF-8 if not already UTF-8 *AND* fixes broken UTF-8.  We've seen spam filters
// ... inject broken headers where unicode nbsp \xC2\xA0 was converted to invalid unicode \xC2\x20 by charset unaware
// ... code that was trying to convert ascii nbsp \xA0 to spaces \x20. Invalid UTF-8 causes MySQL to return errors and
// ... be unable to save records containing it.

And as the code suggests the issue was being caused by a spam filter somewhere along the way between the message being sent and received.  The spam filter was adding content to the message header and incorrectly encoding it.  This fix will ensure that even incorrectly encoded headers will be processed in future.

Can you give that a try and let me know if it works for you?  Thanks!

Dave Edis - Senior Developer

Thank you!

Thank you!!

Thank you!!!

By Brownleather - December 11, 2013 - edited: December 11, 2013

Hi Dave,

The download mail plugin has been running smoothly for a while, thank you for the previous fix.

We received an email today that is chocking up the parser (see attached)

The error is: Incorrect string value: '\xF0\x9F\x8D\x80Ke...' for column 'text' at row 1

I truly appreciate your help


uid-2431.txt 14K

By Dave - December 12, 2013

Hi Brownleather, 

You are doing an amazing job of finding edge cases where the plugin fails.  Thanks for that, and sorry it's not working.

This sequence "\xF0\x9F\x8D\x80" is a 4 byte unicode UTF8 symbol for a green leaf clover:

And the problem is, MySQL's version of UTF8 doesn't support these 4 byte characters until version 5.5:

So the simplest option would probably be to just remove 4-byte sequences, other options would be to require MySQL 5.5+ and switch to utf8mb4 encoding.


- What version of MySQL do you have (listed under: Admin > General at the bottom)
- Would it work to just strip out those characters? (They are things like emoji's, smileys, symbols, etc).

Let me know, thanks!


Dave Edis - Senior Developer

Thanks for your reply.

We are running 5.5.32

So I'd like to switch to utf8mb4 encoding.

Whats the next step?

Thank you


I'll let you know how it goes.