Modules de la contribution

  • HTML Mail pour la gestion pure du mail au format HTML
  • Mail System pour définir quel type de mail on envoi en fonction des actions
  • Variable Email vous permettra de stocker le mail dans une variable et l’envoyer via Rules.

Configuration du module HTML Mail

Définissez dans le module HTMLMail le thème de votre site. Cela permettra de centraliser vos templates au sein de votre thème.

Configuration du module Mail System

Configuré le module pour envoyer des mails passant par HTMLMail dans les cas qui vous intéressent, par exemple les mails système (création de compte, demande de renouvellement de mots de passe) en paramétrant la class HTMLMailSystem

Si vous voulez que les mails envoyés via Rules passent également par HTML Mail, il est possible de créer un “New settings” en sélectionnant le module Rules dans la liste. Une fois le nouveau paramétrage créé, il est possible de lui associer la class HTMLMailSystem

Créer une nouvelle variable de type mail

Dans le .info du module, ajouter une dépendance à

dependencies[] = variable

Créer un fichier my_module.variable.inc

<?php

/**
 * @file
 * my_module.variable.inc
 */

/**
 * Implements hook_variable_info().
 */
function my_module_variable_info($options) {

  $variable['mail_do_something_[mail_part]'] = array(
    'title' => t('Send mail when something happend'),
    'type' => 'mail_text',
    'default' => array(
      'subject' => 'My default subject',
      'body' => 'My default body',
    ),
    'required' => TRUE,
    'group' => 'store_mails',
    'token' => TRUE,
  );

  return $variable;
}

Permettre la modification et traduction de la variable

  • Allez sur la page /admin/config/regional/i18n/variable et cocher la nouvelle variable créée.
  • Enregistrer
  • La variable devrait être disponible en édition pour les différentes langues de votre site sur la page /admin/store/mails
  • Modifier les valeurs des différentes langues pour y inclure le markup HTML du mail
  • Enregistrer

Packaging du mail

Ajouter à votre feature la variable à packager Ajouter à votre feature la variable variable_realm_list_language

<?php

$strongarm = new stdClass();
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
$strongarm->api_version = 1;
$strongarm->name = 'variable_realm_list_language';
$strongarm->value = array(
  0 => 'mail_do_something_[mail_part]',
);
$export['variable_realm_list_language'] = $strongarm;

Utiliser la variable dans Rules

  • Ajouter une Action : Send mail with Variable
  • Sélectionner la variable créée
  • Ajouter node:author:language dans la partie Langue, ce qui permettra d’envoyer automatiquement la variable localisée à l’utilisateur

Lors du packaging de votre rules, une dépendance à variable_email devrait se créer.

dependencies[] = variable_email

Dans l’exemple, ci-dessous nous allons envoyer un mail à l’auteur du contenu à sa création et on obtient l’export suivant :

<?php

/**
 * Implements hook_default_rules_configuration().
 */
function my_module_default_rules_configuration() {
  $items = array();
  $items['rules_mail_to_author'] = entity_import('rules_config', '{ "rules_mail_to_author" : {
      "LABEL" : "Send mail to author",
      "PLUGIN" : "reaction rule",
      "OWNER" : "rules",
      "REQUIRES" : [ "variable_email", "rules" ],
      "ON" : { "node_insert--page" : { "bundle" : "page" } },
      "DO" : [
        { "variable_email_mail" : {
            "to" : [ "node:author:mail" ],
            "variable" : "mail_do_something_[mail_part]",
            "language" : [ "node:author:language" ]
          }
        },
      ]
    }
  }');

  return $items;
}

Et vous comment gérez-vous les envois de mails HTML dans Drupal ?