Développeur Drupal – Blog d'un passionné, un peu touche à tout, dans le monde du web.
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
Bienvenue sur mon blog. Sur cet espace j’essaie de partager au mieux ma passion pour le web et actuellement mon engouement pour Drupal. Vous trouverez ici mes découvertes, mes problématiques et les solutions rencontrées.
4 Responses to Modifier les emails envoyés depuis votre site.
opi
mars 1st, 2010 at 23 h 49 min
Merci pour cet article.
Pour la pinaille, $message['body'] peut aussi etre un tableau, chaque élément du tableau etant en fait une ligne dans le corps du mail.
La fonction drupal_mail insere un » \ n \ n » entre chaque cellule. ( http://api.drupal.org/api/function/drupal_mail/6 )
opi
Julien
mars 1st, 2010 at 23 h 54 min
Hello Opi
Tu parles de la variable $message['body'] contenu dans la fonction hook_mail_alter ?
opi
mars 2nd, 2010 at 11 h 06 min
Oui, dans hook_mail_alter(), $message['body'] peut etre un tableau, ou une string. Si c’est un tableau, drupal_mail() fait un implode.
Julien
mars 3rd, 2010 at 20 h 58 min
Effectivement après recherche il est bien possible de passer un tableau à la variable $message['body'].
Mon problème venait du module htmlmail à qui il fallait mettre un poids plus élevé
Merci Opi pour ton intervention