PHP E-Mail Encoding?

I am having some trouble with foreign characters when sending an e-mail. Could someone advise me on what to do? I suspect the problem could be one of three things.

  1. The html page encoding is incorrect. (Would this affect the POST data from the form?)
  2. The mail function doesn't have any encoding. Thus the program doesn't know how to read it. (Most likely)
  3. The file itself doesn't have the right encoding and thus is making problems. (Probably quite unlikely)

Are there any other possible causes?

I am trying to knock these out 1 by 1 until I find the problem. I think that option 2 is the most likely cause. How do I add proper - universal encoding to a mail function?

This is what I have at the moment.

$mail_sent = mail($client_email, $title, $message, "From: {$visitor_email}");

I am currently aware that form does not send polish or Swedish characters.

I would be very grateful if someone could point out any other possible causes and tell me what encoding I need to use to send e-mails.

Thanks a lot.


Solution 1:

As far as I know PHP does not support UTF-8 as default encoding for its strings. You need to use the relevant encoding/handling functions for the encoding you would prefer.

Also add a Content-Type:text/html;charset=utf-8 to your email headers so the email clients will display the characters correctly (or replace with your encoding of choice).

Solution 2:

You didn’t specify the type and encoding of your content. Try this:

$headerFields = array(
    "From: {$visitor_email}",
    "MIME-Version: 1.0",
    "Content-Type: text/html;charset=utf-8"
);
$mail_sent = mail($client_email, $title, $message, implode("\r\n", $headerFields));