How do I send mass mail in cakephp without using sendgrid

我与影子孤独终老i 提交于 2019-12-12 06:35:32

问题


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
}


来源:https://stackoverflow.com/questions/29137762/how-do-i-send-mass-mail-in-cakephp-without-using-sendgrid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!