[Drupal] envoyer un mail

jeudi 5 avril 2018

Pour envoyer un email dans un module custom dans drupal rien de plus simple.

Il suffit de faire appel à la fonction drupal_mail comme ceci:

$values =array(
            "output" => $content_mail,
            "attachment" => $fileUrl
);
$params = array('values' => $values);
drupal_mail($module_name, $identifier_mail, $email_contact, $language, $params);
  • $module_name: nom de notre module custom pour permettre à drupal de savoir de quel module est envoyé le mail
  • $identifier_mail: est un code qui permettra d’identifier dans le hook mail quel contenu à mettre dans l’email.
  • $email_contact:Expéditeur du mail
  • $language:langue de l’email (‘en’)
  • $params:Un tableau de tous les paramètres à passer à la fonction hook_mail qui donnera le rendu de l’email

Maintenant, il nous reste à créer le contenu de notre email avec le hook_mail de drupal

function mymodule_mail($key, &$message, $params)
{
    if($key == $identifier_mail)
    {
        $message['subject'] = t('test');
        $message['body'] = "Hi,<br/>";
        $message['body'] .= $params['values']['output'];
        $attachment = array(
            'filecontent' => file_get_contents($params['values']['attachment']),
            'filename' => FILENAME_CSV,
            'filemime' => 'application/txt'
        );
        $message['params']['attachments'][] = $attachment;
    }
}

Il faut remplacer $identifier_mail par la constante qu’on a passé en paramètre de drupal_mail.

$params[‘values’]: contiendra tous les paramètres passé à la fonction pour l’envoi de l’email.

Cet exemple-ci comporte aussi un exemple de fichier attaché à l’email.

Tags: drupal , mail