DEV Community

кαтнєєѕкυмαɾ
кαтнєєѕкυмαɾ

Posted on

3 2

How to send Laravel mail using smtp

Create Laravel project or if you are beginner in laravel to visit Laravel Docs

💥 Setup following variables in your .env file

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=sample@example.com
MAIL_PASSWORD=************
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=sample@yourdomain.com
MAIL_FROM_NAME="${APP_NAME}"
Enter fullscreen mode Exit fullscreen mode

Don't use google gmail smtp details. because that is not a proper method to send emails and it is not working properly.

💥 Next you go to your project folder and open terminal run following command to create mail class

php artisan make:mail Mailer
Enter fullscreen mode Exit fullscreen mode

💥 Now go to app/mail folder and setup your mail class like this one

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class NewMail 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($this->details['subject'])
                    ->view('email.contact')
                    ->from($this->details['from'], $this->details['from']);
    }
}
Enter fullscreen mode Exit fullscreen mode

💥 After configure mailing class create a view file with .blade.php extension

<h3 class="aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif; box-sizing: border-box; font-size: 20px; color: #000; line-height: 1.2em; font-weight: 400; text-align: center; margin: 40px 0 0;" align="center">{{ $details['title'] }}</h3>
Enter fullscreen mode Exit fullscreen mode

Don't Forgot Mailing blade files only accept inline css's

💥 Finally set your controller on sending trigger process

public function new_mail(Request $request)
    {

        $details = [
            'to' => $request->to,
            'from' => $request->from,
            'subject' => $request->subject,
            'title' => $request->title,
            "body"  => $request->body
        ];

        \Mail::to($request->to)->send(new \App\Mail\NewMail($details));

        if (Mail::failures()) {
            return response()->json([
                'status'  => false,
                'data'    => $details,
                'message' => 'Nnot sending mail.. retry again...'
            ]);
        }
        return response()->json([
            'status'  => true,
            'data'    => $details,
            'message' => 'Your details mailed successfully'
        ]);
    }
Enter fullscreen mode Exit fullscreen mode

If you want project source please visit my github profile and clone and refer it.

😍 Have a good day.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (2)

Collapse
 
peter279k profile image
peter279k

The controller trigger function is about public function new_mail(Request $request) that seems to have the wrong coding style about the function name.

I think it should be the newMail.

Collapse
 
katheesh profile image
кαтнєєѕкυмαɾ

Yeah. but available lot of Naming convention.
you said about camel-case. but I used snake_case 🤓🤓🤓🤓🤓

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay