Sending Email in CakePHP3 & CakePHP4
Sending Email in CakePHP3 & CakePHP4
CakePHP3:
In your Controller:
use Cake\Mailer\Email;
In your Controller's method:
$email = new Email('default'); $email->sender('app@example.com', 'MyApp emailer'); $email->from(['me@example.com' => 'My Site']) ->to('you@example.com') ->subject('About') ->send('My message');
CakePHP4:
use Cake\Mailer\Mailer;
$mailer = new Mailer('default'); $mailer->setFrom(['me@example.com' => 'My Site']) ->setTo('you@example.com') ->setSubject('About') ->deliver('My message');
Here's another CakePHP4 example, selecting the template (content) and the layout (content wrapper) for your email. This also demonstrates using variables in the template; In this case, first_name and last_name:
$mailer = new Mailer('default'); $emailViewVars = ['first_name'=>'John', 'last_name'=>'Doe']; $mailer->setFrom(['me@example.com' => 'Example.com']) ->setEmailFormat('html') ->setTo('destinationemail@example.com) ->setSubject('Email Subject') ->setViewVars($emailViewVars) ->viewBuilder() ->setTemplate('confirm_email') ->setLayout('default'); $mailer->deliver();
In the above example, here is an example of the confirm_email.php template, located in \templates\email\html\confirm_email.php
Dear <?= $first_name; ?> <?= $last_name; ?>,<br/><br/> Welcome to Example.com!<br/><br/> Please enjoy the website!<br/><br/> Best Regards<br/> The example.com team
Also, in the above example, here is an example of the default.php layout, located in \templates\layout\email\html\default.php
Note: this is the default CakePHP4 version of the file, without the copyright headers.
$content = explode("\n", $content); foreach ($content as $line) : echo '<p> ' . $line . "</p>\n"; endforeach;