Developer Snippet Diary

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.

Posted by: R GONDAL
Email: rizikmw@gmail.com