Как отправить массовую почту в cakephp без использования sendgrid?

Это мой 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();

0

Решение

Вы должны начать с создания шаблон для вашей электронной почты, которая будет включать ваш текущий контент (я использую имя 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
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]