Ajouter un commentaire

Soumis par Tom (non vérifié) le 13/07/2017 à 14:50 - Permalien

Bonjour,

J'ai créé un module de formulaire personnalisé et je ne parviens pas à faire le lien entre ma fonction qui déclenche l'envoie du mail et celle qui prépare le mail. Le mail est du coup envoyé mais sans sujet ni contenu.
Voilà mes deux fonctions :

/**
* Implements hook_mail().
*/
function custom_forms_mail($key, &$message, $params)
{
$options = array(
'langcode' => $message['langcode'],
);
switch ($key) {
case 'submit_form':
$message['from'] = \Drupal::config('system.site')->get('mail');
$message['subject'] = 'Sujet test';
$message['body'][] = Html::escape($params['message']);
break;
}
}

-------------------------------------------------------------------------------------------------

public function submitForm(array &$form, FormStateInterface $form_state) {
$mailManager = \Drupal::service('plugin.manager.mail');
$module = 'custom_forms';
$key = 'submit_form'; // Replace with Your key
$to = \Drupal::currentUser()->getEmail();
$params['message'] = 'Message test';
$params['title'] = 'Title';
$langcode = \Drupal::currentUser()->getPreferredLangcode();
$send = true;

$result = $mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send);
if ($result['result'] != true) {
$message = t('There was a problem sending your email notification to @email.', array('@email' => $to));
drupal_set_message($message, 'error');
\Drupal::logger('mail-log')->error($message);
return;
}

$message = t('An email notification has been sent to @email ', array('@email' => $to));
drupal_set_message($message);
\Drupal::logger('mail-log')->notice($message);
}

Je ne comprends pas ce que j'ai pu oublier. Y a il une manipulation à faire autre que de spécifier le nom du module dans la fonction qui déclenche l'envoi du mail pour faire le lien avec celle qui prépare le mail?

Merci d'avance,