I'm doing a project with Laravel 8 where I need to send an automatic mail everytime the user click a button. I've created all the structure, even following some tutorial because I had no idea of how to do it, but even if i see the "Email sent" page, the email doesn't show on gmail. I really need some help(even if I'm sure that the problem is stupid, but I can't find the error). So there is the code. This is my .env:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=myemail@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
This is my route:
Route::get('send', 'App\Http\Controllers\mailController@sendEmail');
The mailController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use DB;
use PDF;
use App\Mail\TestMail;
class mailController extends Controller {
public function sendEmail()
{
$details = [
'title' => 'Mail from veronica',
'body' => 'This is for testing'
];
Mail::to("receivermail@gmail.com")->send(new TestMail($details));
return "Email sent";
}
}
The TestMail(the is inside App\Mail):
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class TestMail extends Mailable
{
use Queueable, SerializesModels;
public $details;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($details)
{
$this->details = $details;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('Test Mail from Veronica')->view('mail');
}
}
And in the end the mail.blade.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Test Mail</title>
</head>
<body>
<h1>{{$details['title']}}</h1>
<p>{{$details['body']}}</p>
<p>Thank you</p>
</body>
</html>
That's everything I've modified, as I said if I go to http://localhost:8000/send I can see "Email sent", but I don't recive the mail.
If I can I would like to ask another thing, the next step is to attach to the mail a .pdf with some informations, I know that I have to use ->attachData("document.pdf", $pdf), but where do I have to put it?
Thanks so much for your help!