Afficher/cacher Sommaire
Utilisation de caractères UTF-8 dans le champ sujet d’un courrier électronique
Article original ,Using UTF-8 characters on an e-mail subject
Si vous avez envoyé des e-mails dans une langue différente de l’anglais ou que vous utilisez des caractères en dehors de la gamme ASCII, vous avez déjà utilisé utf8 pour les envoyer.
La spécification de l’utilisation d’UTF-8 dans le corps d’un e-mail est très semblable à celle-ci pour une réponse HTTP. Vous pouvez spécifier le type de contenu dans un en-tête de messagerie comme ceci:
Content-Type: text/plain; charset=utf-8
Mais il y a des prises. La ligne d’objet d’un e-mail est un en-tête par lui-même, et les en-têtes doivent contenir uniquement des caractères ASCII.
RFC 1342 est une recommandation qui fournit un moyen de représenter des caractères non ASCII dans les en-têtes de courrier électronique d’une manière qui ne va pas confondre les serveurs de messagerie.
Pour coder un en-tête à l’aide de cette technique, vous devez utiliser ce format:
=?charset?encoding?encoded-text?=
Et ceci est un exemple de son utilisation:
=?utf-8?Q?hello?=
L’encodage doit être soit B soit Q, cela signifie base 64 et quoted-printable respectivement. Vous pouvez lire le document RFC 1342 pour plus d’informations sur leur fonctionnement.
Utiliser la fonction de messagerie mail de php pour envoyer un courrier électronique en utilisant UTF-8 dans le sujet et le contenu.
Script PHP /usr/local/bin/phpmail
sudo nano /usr/local/bin/phpmail
#!/usr/bin/php
<?php
/*
phpmail, utilisation de caractères UTF-8 dans les champs sujet et corps d'un message
syntaxe: phpmail --message="contenu du message ou commande linux entre 2 backquote" --subject="objet du message" --from="adresse mail expéditeur" --to="adresse mail destinataire"
exemple: phpmail --message="`grep "$(date +"%d %B %Y")" /home/backupuser/sauvegarde.log`" --subject="Sauvegarde du $(date +"%d %B %Y")" --to="cinay@cinay.pw" --from="yanspm@yanspm.com"
*/
foreach ($argv as $arg) {
$e=explode("=",$arg);
if(count($e)==2)
$_GET[$e[0]]=$e[1];
else
$_GET[]=$e[0];
}
// var_dump($_GET);
$headers = 'From: '.$_GET["--from"]."\r\n".'Content-Type: text/plain; charset=utf-8'."\r\n";
mail($_GET["--to"], '=?utf-8?B?'.base64_encode($_GET["--subject"]).'?=', $_GET["--message"], $headers);
?>
doit être exécutable :
sudo chmod +x /usr/local/bin/phpmail