Sending emails using SendGrid in Laravel

Hello folks, here we ‘ll know how to send emails using sendgrid in laravel. We have many ways to send emails in laravel, we can send emails using plain php or we can use email service providers like SendGrid, mailgun, mandrill and many more. As one of the follower of this site justlaravel.com has request me to post a tutorial on ‘sending emails using sendgrid’ am posting this here.

Follow these few simple steps,

Step 1 – Register SendGrid Account

Go to https://sendgrid.com .
Click Try for Free button
Fill all the necessary details
Wait for a email from SendGrid conforming that your account is provisioned.

Cool,you are ready to go.

Step 2 – Change mail configurations in .env and mail.php files

Open .env located at root of the application, edit the file as below

Now open mail.php located in /config/mail.php, (for further reference on folder/application structure look at previous post on Laravel application structure)
edit the file as below,

if your website has ssl certificate, change the line 'encryption' => 'tls' to'encryption' => 'ssl' and 'port' => 465,

Step 3 – Send emails the way you want

We ‘ll create some textarea, and the text entered will be sent as a mail when an valid email is entered,
check the form below,

and we create another form just with email field,

When the send button is clicked we route it to the following function,

and the view for the emails which we are going to be send be like,

That’s it, look the below screen shots for reference,

Sending emails using SendGrid – justlaravel.com
Sending emails using SendGrid – justlaravel.com


11 thoughts on “Sending emails using SendGrid in Laravel”

  • 18
    Crecendia on June 9, 2016 Reply

    I’ll give it try. What the laravel version did you use?

  • 20
    Gabriel Piriz on August 2, 2016 Reply

    Hello, I’m having a problem when trying to send a mail. The laravel error is the following:

    ErrorException in StreamBuffer.php line 95:
    stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
    error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

    I would appreciate if you can help me, thanks!

    • 21
      avinash on August 2, 2016 Reply

      That problem was related to SSL config, make sure SSL is enabled in your server and its configuration is right.

  • 22
    Richard Kalauli on August 16, 2016 Reply

    Exceptional post however I was wanting to know if you could write a litte more on this topic? I’d be very grateful if you could elaborate a little bit more. Appreciate it!|

    • 23
      avinash on August 16, 2016 Reply

      Sure, will try to edit this post.

      Cheers 🙂

  • 24
    Mat Velish on January 17, 2017 Reply

    Hi, thanks for upload this article.

    Im facing an annoying issue that I don’t know how to fix and maybe you can please drive me at least on the right direction:

    – Created my sendgrid account.
    – Created my apikey and gave mail permissions.
    – Setup .env values and also on config/mail — from SendGrid tutorial I understand username for smtp is always ‘apikey’ and the actual apikey value as password.

    no matter what I try I keep having this error message back:

    Expected response code 250 but got code “550”, with message “550 Unauthenticated senders not allowed”

    Im not sure what I’m missing.

    Thanks for your time.

    • 25
      avinash on January 17, 2017 Reply

      Hello Mat Velish,

      If you look at this post’s ‘Step 2’, you will notice that in .env file, you need to give sendGrid login credentials like username and password and not any ‘apikeys’ and even in config/mail.php you need to provide the same.

Leave a Reply