我如何在CakePHP中发送群发邮件,而无需使用sendgrid(How do I send mas

2019-11-03 17:14发布

这是我的HTML模板

Dear ##name##(##email##),

Thank you for contacting us.

我想,以取代##名##和##电子邮件##与收件人的姓名和谁得到它的人,这将在阵列中提供的电子邮件。 我该怎么做?

这是我这么远

$to_email = array('a@example.com', 'b@example.com', 'c@example.com');
$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();

Answer 1:

你应该开始创建模板,为您的电子邮件,这将包括您当前的内容(我用的名字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(
    'a@example.com' => 'apple',
    'b@example.com' => 'ball',
    'c@example.com' => 'cat'
);

然后,只需过的foreach您的阵列和发送邮件:

$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
}


文章来源: How do I send mass mail in cakephp without using sendgrid