Développeur Drupal – Blog d'un passionné, un peu touche à tout, dans le monde du web.
Envoyer des emails depuis votre module est simple à faire, il suffit de déclarer le hook_mail() puis de faire appel à la fonction drupal_mail(). Vous trouverez ci-dessous, un exemple de code que vous pouvez intégrer dans votre module :

Dans un premier temps nous allons déclarer le hook_mail qui va être utilisé pour construire l’email avec la configuration que nous avons choisie et les paramètres que nous allons passer via la fonction drupal_mail. Vous pouvez spécifier plusieurs options :
$key : Identifiant unique pour votre email.
$message : Tableau de valeurs contenant les informations relatives à l’email.
* ‘id’ : Identifiant pour distinguer l’email envoyé.
* ‘to’ : L’adresse du destinataire
* ’subject’ : Le sujet de votre email
* ‘body’ : Le contenu de votre email.
* ‘from’ : L’adresse de l’émetteur
* ‘headers : Les informations d’en-tête de votre email.
$params : Tableau de paramètres dans lequel vous pouvez récupérer les informations que vous allez passer dans la fonction drupal_mail.
function MyModule_mail($key, &$message, $params) {
// note: l'utilisation d'une clé va nous permettre de distinguer plusieurs templates d'emails pouvant être envoyés par un même module.
switch ($key) {
case 'envoi_email':
// note: Ici nous récupérons les informations passées dans le tableau $params
$message['subject'] = $params['subject'];
$message['body'] = $params['body'];
break;
}
}
La fonction drupal_mail() va nous permettre de définir un ou plusieurs templates d’emails dans lesquels nous allons pouvoir spécifier le contenu, le sujet et passer des paramètres pouvant être utilisés par la fonction hook_mail que nous venons de déclarer.
$module : Nom de votre module.
$key : La clé qui va vous permettre d’identifier votre email.
$to : L’adresse du destinataire.
$language : La langue dans laquelle sera traduit votre email.
$params : Le tableau optionnel de valeurs à passer à la fonction hook_mail.
$from : L’adresse de l’émetteur
$send : Configure l’envoi immédiat ou non de l’email
Vous pouvez appeler cette fonction à la suite d’une action d’un utilisateur sur votre site ou encore lors de la soumission d’un formulaire.
$to = 'you@example.com';
$from = 'me@example.com';
$params = array(
'body' => t("Vous venez de recevoir cet email depuis mon site drupal"),
'subject' =>t("test d'envoi d'email"),
);
if (drupal_mail('MyModule', 'envoi_email', $to, language_default(), $params, $from, TRUE)) {
drupal_set_message("Votre email à été envoyé à " . $valid_email);
}
else {
drupal_set_message("Une erreur s'est produite lors de l'envoi de votre email");
}
Note : Si vous comptez envoyer des emails à des utilisateurs enregistrés sur votre site pensez à utiliser leurs paramètres, comme la langue d’affichage que vous pourrez trouver dans l’objet $user.
Credit photo : JulesAngel
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.