Это мой HTML шаблон
Dear ##name##(##email##),
Thank you for contacting us.
Я хочу заменить ## name ## и ## email ## на имя получателя и адрес электронной почты человека, который его получит, что будет указано в массиве. Как мне это сделать?
Это то, что у меня так далеко
$to_email = array('[email protected]', '[email protected]', '[email protected]');
$to_name = array('apple', 'ball', 'cat');
$Email = new CakeEmail();
$Email->from($from);
$Email->to($to_email );
$Email->subject($subject);
$Email->emailFormat('html');
$Email->viewVars(array('data' => $body));
$Email->template('bulk');
$Email->send();
Вы должны начать с создания шаблон для вашей электронной почты, которая будет включать ваш текущий контент (я использую имя example_template.ctp
в моих примерах ниже):
Dear <?php echo $name; ?> <?php echo $email; ?>,
Thank you for contacting us.
Затем вы должны изменить способ настройки вашего viewVars()
а также template()
:
$Email->viewVars(array('email' => $email, 'name' => $name));
$Email->template('example_template');
Также необходимо изменить способ отправки электронных писем, чтобы перебирать электронные письма вместо отправки всех получателей в одном поле. Поэтому объедините ваши входные массивы в один, например:
$emails = array(
'[email protected]' => 'apple',
'[email protected]' => 'ball',
'[email protected]' => 'cat'
);
Тогда просто создайте свой массив и отправляйте письма:
$Email = new CakeEmail();
foreach ($emails as $email => $name) {
$Email->from($from);
$Email->to($email);
$Email->subject($subject);
$Email->emailFormat('html');
$Email->viewVars(array('email' => $email, 'name' => $name));
$Email->template('example_template');
$Email->send();
$Email->reset(); // for cleaning up CakeEmail object
}
Других решений пока нет …