Ce blog de l'agence de création de site internet OpenAccess a pour objectif de faire partager des articles sur la création de sites web, sur Drupal, le Zend Framework et tout autre sujet relatif à la création de sites.

Dans certains cas on pourrait vouloir outrepasser la façon dont Drupal envoie les mails.
Dans mon cas, j'avais besoin de pouvoir utiliser un webservice pour envoyer les mails. Dans d'autres cas on pourrait vouloir simplement utiliser un serveur SMTP pour l'envoie de mails (Au passage le module PHPMailer est fait pour ça).
On peut aussi simplement vouloir mieux controler les mails qui sortent de Drupal. (Empêcher certains mails de sortir, ajouter un lien dans le mail, un mot dans le sujet, etc...)...
Dans cet article je vais tenter d'expliquer comment avec un simple module on peut contrôler la mecanique d'envoie de mails.
Le principe est très simple : on va utiliser la fonction drupal_mail_wrapper(). Par contre pour pouvoir l'utiliser, il faut indiquer à Drupal que l'on souhaite outrepasser la mecanique habituelle.
Ceci se fait simplement en ajoutant le chemin du module dans la variable de configuration "smtp_library" :
<?php
$smtp_path = drupal_get_filename('module', 'mon_module');
variable_set('smtp_library', $smtp_path);
?>À ce niveau Drupal cherchera la fonction drupal_mail_wrapper() à chaque envoi de mail.
<?php
function drupal_mail_wrapper($message) {
//Le paramètre $message contient comme sont nom l'indique le message
$id = $message['id'];
$to = $message['to'];
$from = $message['from'];
$language = $message['language'];
$subject = $message['subject'];
$body = $message['body'];
$headers = $message['headers'];
//Envoie du mail à l'aide de la fonction mail() de PHP
return mail($to, $subject, $body);
}
?>
Commentaires
Ajouter un commentaire