La commande mail( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

Pour le sujet il est précisé de suivre l'encodage tel que le spécifie la RFC 2047.


  Initially, the legal values for "encoding" are "Q" and "B".  These
  encodings are described below.  The "Q" encoding is recommended for
  use when most of the characters to be encoded are in the ASCII
  character set; otherwise, the "B" encoding should be used.
  Nevertheless, a mail reader which claims to recognize 'encoded-word's
  MUST be able to accept either encoding for any character set which it

  The "B" encoding automatically meets these requirements.  The "Q"
  encoding allows a wide range of printable characters to be used in
  non-critical locations in the message header (e.g., Subject), with
  fewer characters available for use in other locations.
//die(mb_internal_encoding());	// ISO-8859-1
/* Utilise l'encodage interne UTF-8 */
/* Affiche l'encodage interne courant */
//die(mb_internal_encoding());	// UTF-8

Par défaut, dépends de la conf de php.ini :

;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1

L'envoi de votre mail :

$subject = "Mon sujet avec des caractères bien français :) ho yé ho yé !";
		$subject = mb_encode_mimeheader($subject,"UTF-8", "B", "\n");
		$message = "Mon blabla UTF-8 tout comme mon fichier php source écrit en UTF 8 français."
		$additional_headers = 'Content-type: text/plain; charset=UTF-8' . "\r\n";
		mail("votre.mail@votre.domaine", $subject, $message, $additional_headers);

Ainsi le si vous regardez le source du mail :

Le sujet : "données différentes"

qui était envoyé comme suit :

Subject: Alerte : données différentes : 220583 / 205295

deviendra :

Subject: Alerte  : =?UTF-8?B?ZG9ubsOpZXMgZGlmZsOpcmVudGVzIDogMjIwNjEz?=  =?UTF-8?B?IC8gMjA1NjY4?=

Et votre sujet sera correctement lu par les différents clients de messagerie, Outllook, Gmail, Zimbra, etc...