How do I send emails with Arabic content via PHP's mail function?
Unfortunately, 8bit
encoding is not reliable in e-mail. Many mail transport agents will remove the top bit of every byte in the mail body. بريد
is "\xD8\xA8\xD8\xB1\xD9\x8A\xD8\xAF"
in UTF-8 bytes; remove the top bit from those bytes and you get ASCII "X(X1Y\nX/"
.
The way to get non-ASCII characters into a mail body is to set Content-Transfer-Encoding
to either base64
or quoted-printable
, and the encode the body with base64_encode
or quoted_printable_encode
, respectively.
(quoted-printable
is better if the mail is largely ASCII as it retains readability in the encoded form and is more efficient for ASCII. If the whole mail is Arabic, base64
would probably be the better choice.)