Pour compléter mon précendent billet voici comment modifier les emails envoyés depuis votre site.
Pour générer l’envoi de mail depuis un module nous avons utilisé les fonctions hook_mail() et drupal_mail(). Pour la modification nous allons utiliser la fonction hook_mail_alter(&$message) afin d’avoir un accès complet à tous les emails envoyés.
La variable $message contient toutes les informations nécessaires à l’envoi de l’email et à ce stade, l’email à été formaté et est prêt à l’envoi. Dans cette variable on retrouve donc les infos headers, le body, le sujet, les paramètres passés lors de la génération de l’email et surtout l’identifiant renseigné.
C’est grâce à ce dernier que nous allons pouvoir identifier et modifier un email en particulier. Cette clé est constituée des deux prermiers paramètres fusionnés passés à la fonction drupal_mail, soit dans notre cas MyModule et envoi_email.
Voici un exemple pour ajouter la signature de votre site au bas de notre email.
function MyOtherModule_mail_alter(&$message) {
if ($message['id'] == 'MyModule_envoi_email') {
$message['body'] .= "--\nMail envoyé depuis " . variable_get('sitename', t('Drupal'));
}
}
$message['body'] est un tableau, vous pouvez donc lui rajouter autant d’entrées que vous voulez
Edit : Suite à mes échanges avec Opi sur mon impossibilité à passer un tableau à la variable $message['body'] j’ai cherché ce qu’il se passait. En fait, entre la déclaration de mon e-mail et la modification de celui-ci, le module htmlmail qui était installé sur mon drupal transformait le tableau en une chaîne de caractères :/
Si vous subissez le même problème, il suffit de modifier le poids de vos modules pour qu’ils s’exécutent dans l’ordre voulu.
Articles relatifs : Envoyer des emails depuis un module