0

这是我的html模板

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

Thank you for contacting us.

我想将 ##name## 和 ##email## 替换为接收者的姓名和接收者的电子邮件,这将在数组中提供。我该怎么做?

这是我到目前为止所拥有的

$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();
4

1 回答 1

2

您应该从为您的电子邮件创建模板开始,其中将包括您当前的内容(我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'
);

然后只需遍历您的数组并发送邮件:

$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
}
于 2015-03-19T10:18:27.163 回答