web-dev-qa-db-fra.com

Comment envoyer des e-mails à plusieurs destinataires à l'aide de drupal_mail?

J'utilise drupal_mail pour envoyer des e-mails,

$to = '[email protected]';
drupal_mail('$module_name', $key, $to, language_default(), $params = array('username' => 'Tanvir'), $from = NULL, $send = TRUE);

Je souhaite envoyer des e-mails à plusieurs adresses e-mail à la fois. Dois-je faire ça?

$to  = array('[email protected]', '[email protected]', '[email protected]',);
drupal_mail('$module_name', $key, $to, language_default(), $params = array('username' => 'Tanvir'), $from = NULL, $send = TRUE);
8
Tanvir Ahmad

Le paramètre to à drupal_mail est une chaîne, pas un tableau. Mais vous pouvez avoir autant de destinataires que vous le souhaitez dans la chaîne des e-mails "à", à condition qu'ils soient séparés par des virgules.

Donc, pour envoyer le même courrier à plusieurs destinataires, procédez comme suit:

$to  = '[email protected],[email protected],[email protected]';
drupal_mail('$module_name', $key, $to, language_default(), $params = array('username' => 'Tanvir'), $from = NULL, $send = TRUE);

Voir aussi Documentation API pour drupal_mail

24
Free Radical

Selon PHP doc vous ne pouvez envoyer qu'une seule lettre via un appel de la fonction drupal_mail. Donc, vous devriez utiliser cycle. Exemple

$to  = array('[email protected]', '[email protected]', '[email protected]',);
foreach ($to as $email) {
  drupal_mail('$module_name', $key, $email, language_default(), $params = array('username' => 'Tanvir'), $from = NULL, $send = TRUE);
}
1
Eugene

Utilisez hook_mail pour envoyer plusieurs destinataires en passant:

$params = array();
$params['cc'][] = '[email protected]'
drupal_mail('$module_name', 'custom_key', $to, language_default(), $params = array('username' => 'Tanvir'), $from = NULL, $send = TRUE);


//hook will be the module name

function hook_mail($key,&$message,$params) {

  if ($key == 'custom_key') {
    $message['headers']['cc'] = $params['cc'];
    //.
    //.
    //.
    //.
  }    
}
1
harshal

Si vous lisez la documentation de la fonction drupal_mail, vous verrez que le paramètre '$ to' accepte une chaîne et non un tableau dans certains formats comme:

  1. [email protected]
  2. [email protected], [email protected]
  3. Utilisateur
  4. Utilisateur, un autre utilisateur

Ainsi, nous pouvons facilement convertir votre $ en tableau au format requis en utilisant la fonction imploser et donc vous devrez envoyer un e-mail à plusieurs destinataires en une seule fois. Voici le code:

$to  = array('[email protected]', '[email protected]', '[email protected]',);

//To change array('[email protected]', '[email protected]', '[email protected]',)  -> '[email protected], [email protected], [email protected]' use implode

$to_str = implode(",", $to);

drupal_mail('$module_name', $key, $to_str, language_default(), $params = array('username' => 'Tanvir'), $from = NULL, $send = TRUE);
0
Karan