Sign up for Mailgun
Then find your API keys
Updating env file
Open config/mail.php to configure beginning of email:
MAIL_HOST should be smtp.mailgun.org
Update from address to something like:
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'myemail@domain.com'),
'name' => env('MAIL_FROM_NAME', 'Christine'),
],
Open up config/services.php to find mailgun variables needed to set up env file. MAILGUN_DOMAIN, MAILGUN_SECRET
Open env file and delete all mail info and add these lines:
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@blah.mailgun.org
MAIL_PASSWORD=passwordhere
MAIL_ENCRYPTION=tls
MAILGUN_DOMAIN=sandboxa63bbae0e8f448b7a7943f800a2a166a.mailgun.org
MAILGUN_SECRET=281329ff11f62a513a665d35f7763aea-4dd50799-322083f3
Get the password and username from clicking SMTP option inside Mailgun.
Create a new view /emails/test.blade.php. Then add to route:
Route::get('/', function () {
// return view('welcome');
$data = [
'title' => 'This page will send an email',
'content' => 'It\'s going to happen, just wait!',
];
Mail::send('emails.test', $data, function($message){
$message->to('emailhere', 'Christine')->subject('This is the subject');
});
});
Add this to your test.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>{{$title}}</h1>
<h1>{{$content}}</h1>
</body>
</html>
Then add a requirement:
composer require guzzlehttp/guzzle
Any changes made to email do this: php artisan config:clear
You need to go into vender > guzzlehttp > guzzle > src > Client.php and find verify
.. change it to false.. this will allow without ssl enabled in dev.
Now you’ll be able to visit the homepage and you’ll get sent an email!
If you go back to Mailgun you can go to Sending > Logs to see the emails went out.