Woocommerce e-mail UTF-8 encoding

Woocommerce sends mail using the WordPress system, but they define their own headers. This is where things can go wrong (it mainly depends on the way your mail server is configured).


If your e-mail headers look like this in the source:
<!DOCTYPE html><html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; chars=et=3DUTF-8">

And currency symbols and other special characters are not correctly displayed, for example


It is probably because another header will say

Content-Transfer-Encoding: quoted-printable
And your mail client has trouble displaying special characters that were UTF-8 encoded. In other words, the encoding isn’t clearly stated in the header.

So the solution is to open woocommerce/classes/class-wc-emails.php

function send( $to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = "", $content_type = 'text/html'
Change to
function send( $to, $subject, $message, $headers = "Content-Type: text/html; charset=UTF-8\r\n", $attachments = "", $content_type = 'text/html'
Make sure you type correctly, or your order overview will break and no mails will be sent. You can test the results by adding comments to a test order.