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.
- The html page encoding is incorrect. (Would this affect the POST data from the form?)
- The mail function doesn't have any encoding. Thus the program doesn't know how to read it. (Most likely)
- 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));