web-dev-qa-db-ja.com

drupal_mailを使用して複数の受信者にメールを送信する方法

Drupal_mailを使用してメールを送信しています。

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

一度に複数のメールアドレスにメールを送信したい。これを行うべきですか?

$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

drupal_mailのtoパラメータは文字列であり、配列ではありません。ただし、コンマで区切られている場合は、電子メールの "to"文字列に任意の数の受信者を含めることができます。

したがって、同じメールを複数の受信者に送信するには、次のようにします。

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

Seも drupal_mailのAPIドキュメント

24
Free Radical

PHP docによると、関数drupal_mailの1回の呼び出しで送信できる文字は1つだけなので、サイクルを使用する必要があります。例

$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

hook_mail を使用して、次を渡して複数の受信者を送信します。

$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

Drupal_mail関数のドキュメントを読んだ場合、 '$ to'パラメータは次のような特定の形式の配列ではなく文字列を受け入れることがわかります。

  1. [email protected]
  2. user @ example.com、anotheruser @ example.com
  3. ユーザー
  4. ユーザー、別のユーザー

したがって、$ to配列を関数implodeを使用して必要な形式に簡単に変換できるため、一度に複数の受信者に電子メールを送信する必要があります。これがコードです:

$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