Modifier les emails envoyés depuis votre site

Modifier les emails envoyés depuis votre site

01 Mar 2010 |  Drupal

Pour compléter l’article pécedent sur l’envoi d’email depuis un module Drupal 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

Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi