How do I send mass mail in cakephp without using s

2019-09-14 22:09发布

问题:

This is my html template

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

Thank you for contacting us.

I want to replace ##name## and ##email## with the receiver's name and email of the person who gets it which will be provided in the array. How do I do it?

This is what I've got so far

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

回答1:

You should start with creating template for your email, which will be including your current content (I use name example_template.ctp in my samples below):

Dear <?php echo $name; ?> <?php echo $email; ?>,

Thank you for contacting us.

Then you have to modify way of setting up your viewVars() and template():

$Email->viewVars(array('email' => $email, 'name' => $name));
$Email->template('example_template');

There is also required to change way of sending emails to loop over emails instead of sending all recipients in one field. So combine your input arrays into one, e.g.:

$emails = array(
    'a@example.com' => 'apple',
    'b@example.com' => 'ball',
    'c@example.com' => 'cat'
);

Then just foreach over your array and send mails:

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