我需要向多个收件人发送电子邮件。收件人数量将根据数据库中的数据而有所不同。
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"];
我的问题是如何根据电子邮件阵列的长度生成“收件人”值?
有没有办法可以破坏整个数组脚本?
答案 0 :(得分: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个元素传递给函数并返回一个包含两个值的数组,然后传递第一个,第二个等,并将每个结果返回一个新数组($ mandrillTo)