How to send email to users laravel
1. Make a class
php artisan make:mail AlertMail
It will create a app/Mail/AlertMail.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class AlertMail extends Mailable
{
use Queueable, SerializesModels;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
return $this->view('email.alert')->with('data',$this->data);
}
}
2. Create a view inside resources\views\email/alert.blade.php
<h1>Hello this is alert</h1>
<h1>{{$data}}</h1>
3. Controller config
goto app\Http\Controllers/HomeController.php You can use anyother controller also
use Mail;
use App\Mail\AlertMail;
class HomeController extends Controller
{
public function email()
{
$data="Rizi sending email";
Mail::to('rizikmw@gmail.com')->send(new AlertMail($data));
echo "success";
}
}
4.Routing web.php
Route::get('send-email', [App\Http\Controllers\HomeController::class, 'email'])->name('send-email');
EXAMPLE:
AlertMail.php mailable
class AlertMail extends Mailable
{
use Queueable, SerializesModels;
public function __construct($subject=null,$content=null)
{
if($subject){ $this->subject = $subject; }else{ $this->subject = "Kuttik"; }
if($content){ $this->content = $content; }else{ $this->subject = "https://kuttik.com"; }
}
public function build()
{
return $this->subject($this->subject)->view('email.alert')->with('content',$this->content);
}
}
alert.blade.php
<h1>{{$content}}</h1>
http/Controller.php
public function sendmail($to=null,$subject=null,$content=null)
{
if($to==null){ return; }
Mail::to($to)->send(new AlertMail($subject, $content));
}
public function index()
{
$this->sendmail("rizikmw@gmail.com","Helo subject","hello message");
}
OR
1.Make a files inside views/emailsTemplates/simple.blade.php
Hello world {{$urlis}}
2. Inside controller do this code
$urlis="https://google.com/";
Mail::send('emailsTemplates.simple', ['urlis' => $urlis], function ($message) use ($email) {
$message->to('test@gmail.com');
$message->from("abc@gmail.com","YPAGES");
$message->subject('Verify yourself');
});
Send email without class:
1. import it
use Illuminate\Support\Facades\Mail;
2. inside function
Mail::send([], [], function ($message) {
$message->to("rizikmw@gmail.com")
->subject("hello lol")
->setBody('<h1>Hi, welcome user!</h1>', 'text/html'); // for HTML rich messages
});
DO must email configration inside env file in laravel first.