1

複数の受信者にメールを送信する必要があります。受信者の数は、データベース内のデータによって異なります。

Mandrill では、配列を使用して複数の受信者を追加することしかできません。

以下は、複数の受信者に対して機能するものです

//email array that needs to be added to the 'to' key
$emailArray = ["example@example.com","test@test.com","hello@test.com","world@test.com"];

$mandrill = new Mandrill('xxxxxxxxxxxxxxx');   
$message = array(
          'subject' => 'Thanks for signing up',
          'from_email' => 'support@test.com',
          'to' => array(

           array(
                'email' => 'hello@test.com',
                'name' => 'Hello Test'
               ),

              array(
               'email' => 'goodbye@test.com',
                'name' => 'Goodbye Test',
              )


            ),

            'global_merge_vars' => array(
                array(
                    'name' => 'FIRSTNAME',
                    'content' => 'JOHN'
                    ),
                array(
                    'name' => 'LASTNAME',
                    'content' => 'DOE')

            ));

        //print_r($message);

        $template_name = 'hello-world';


        print_r($mandrill->messages->sendTemplate($template_name, $template_content, $message));

以下は、emailArrayの長さに応じて動的に生成する必要があるものです

to' => array(
           //the below array should be dynamically generated   
           array(
                'email' => 'hello@test.com',
                'name' => 'Hello Test'
               ),

              array(
               'email' => 'goodbye@test.com',
                'name' => 'Goodbye Test',
              )


            )

これが配列です。現在は固定値です。

 //email array that needs to be added to the 'to' key
$emailArray = ["example@example.com","test@test.com","hello@test.com","world@test.com"];

私の質問は、電子メール配列の長さに基づいて「To」値をどのように生成するのですか?

配列スクリプト全体を内破する方法はありますか?

4

1 に答える 1

1

効果的な方法は、名前の配列も取るいくつかのコードに追加したarray_mapを使用することです (コードのどこから名前を取得しているのかわかりませんでした)。

$toAddresses = array('example@example.com','test@test.com','hello@test.com','world@test.com');
$names = array('Exmaple', 'Test', 'Hello', 'World');

$mandrillTo = array_map( function ($address, $name) {
    return array(
        'email' => $address,
        'name' => $name
    );
},
$toAddresses,
$names
);

これは、各配列の 0 番目の要素を関数に渡し、2 つの値の配列を返します。次に、1 番目、2 番目などを渡し、各結果を新しい配列 ($mandrillTo) に返します。

于 2014-03-02T21:52:46.337 に答える