Envoyer les titres des emails correctement dans un codage autre que ISO-8859. Voir explication ci-dessous:

Now we have an encoded subject, but our mail reader won't know that. So we need to tell it by formatting our subject as follows: "=?" charset "?" encoding "?" encoded-text "?=" , where charset is the original character set and encoding is either "Q" for Quoted-Printable or "B" for Base64.

The subject containing the Quoted-Printable ISO-8859-1 string "Voilà une message", is written as:
Subject: =?ISO-8859-1?Q?Voil=E0_une_message?=
The Base64 version of the ISO-8859-1 string is:
Subject: =?ISO-8859-1?B?Vm9pbOAgdW5lIG1lc3NhZ2U=?=
The Quoted-Printable version of the UTF-8 string is:
Subject: =?UTF-8?Q?Voil=C3=A0_une_message?=
The Base64 version of the UTF-8 string is:
Subject: =?UTF-8?B?Vm9pbMOgIHVuZSBtZXNzYWdl?=

"Raw" non-encoded subjects can work and modern mail clients handle it properly, but I found that at least using utf-8 as encoding, the spam analizers complain stating "BAD HEADER Non-encoded 8-bit data". To prevent this, and taking the info above, I decided to use base64, which at least seems to have specific functions (and because it works, of course). So, one could use the following code:

Donc voici ce qu'il faut faire pour tout encoder en base_64:

$subject='Subject with extra chars: áéíóú';
$body='This is the body';
$headers="From: ".$from."
    . "Content-Type: text/plain; charset=$charset; format=flowed
    . "MIME-Version: 1.0
    . "Content-Transfer-Encoding: 8bit
    . "X-Mailer: PHP
mail($to,$encoded_subject, $body,$headers);


Solution trouvé sur php.net.