How to send email using Laravel?

Viewed 8429

I'm trying to send an email but I can't move anymore and that's my view:

<h1>Contact TODOParrot</h1>
<form action="contact" method="post">

<div class="form-group">
 <label>Your First Name</label>
 <input type="text" name="Fname" placeholder="Your First Name" />
</div>

<div class="form-group">
  <label>Your Last Name</label>
  <input type="text" name="Lname" placeholder="Your Last Name" />
</div>

<div class="form-group">
<label>Your Email</label>
  <input type="email" name="Email" placeholder="Your Email" />
</div>
<div class="form-group">
<label>Your Phone Number</label>
  <input type="text" name="Phone" placeholder="Your Phone" />
</div>
<div class="form-group">
<label>Your Order</label>
  <input type="text" name="Order" placeholder="Your Order" />
</div>

<div class="form-group">
    <button class="btn btn-default" name="Submit" type="Submit">Send Order</button>
</div>
</form>

and that is my controller :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;  
use App\Http\Requests\ContactFormRequest;
    
class aboutController extends Controller
{
    //
    public function create()
    {
        return view('about.contact');
    }

    public function store(ContactFormRequest $request)
    {
        \Mail::send('about.contact',
        array(
            'Fname' => $request->get('Fname'),
            'Lname' => $request->get('Lname'),
            'Email' => $request->get('Email'),
            'Phone' => $request->get('Phone'),
            'Order' => $request->get('Order')
        ), function($message)
    {
        $message->from('mohamedsasa201042@yahoo.com');
        $message->to('elbiheiry2@gmail.com', 'elbiheiry')->subject('TODOParrot Feedback');
    });

        return \Redirect::route('contact')
      ->with('message', 'Thanks for contacting us!');
    }
}

And that's my route:

Route::get('contact', 
  ['as' => 'contact', 'uses' => 'AboutController@create']);
Route::post('contact', 
  ['as' => 'contact', 'uses' => 'AboutController@store']);

And that's the configuration in the .env file:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=ssl

And I removed the name and password in the question when I press send it gives me 'Forbidden' as a message.

Can anyone help?

5 Answers
MAIL_DRIVER=sendmail
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls

i had some similar problem and changed the MAIL_DRIVER = sendmail from smtp

Laravel app

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465          
MAIL_USERNAME=<<your email address>>
MAIL_PASSWORD=<<app password>>

MAIL_ENCRYPTION= ssl   

In your Controller Setting

faced

use Illuminate\Support\Facades\Mail;

to Send mail

$to_name = "RECEIVER_NAME";
$to_email = "tomail@gmail.com";
$data = array("name"=>"Cloudways (sender_name)", "body" => "A test mail");

Mail::send([], $data, function($message) use ($to_name, $to_email) {
$message->to($to_email, $to_name)
->subject("Laravel Test Mail");
$message->from("preealweb@gmail.com","Test Mail");
});

Note: from mail and to mail

make sure enable SucureLess mail in gmail setting

Here are three methods to send email in laravel 8.
First one is through our email id.
Second one is through Mailgun.
Third one is through SendinBlue.


# For smtp

# MAIL_MAILER=smtp
# MAIL_HOST=smtp.gmail.com
# MAIL_PORT=587
# MAIL_USERNAME=xxxxxxxxxxxxx@gmail.com
# MAIL_PASSWORD=xxxxxxxxxxxxxxx
# MAIL_ENCRYPTION=tls
# MAIL_FROM_ADDRESS=xxxxxxxxxxx@gmail.com
# MAIL_FROM_NAME="${APP_NAME}"

# For Mailgun

# MAIL_MAILER=mailgun
# MAIL_HOST=smtp.mailgun.org
# MAIL_PORT=587
# MAIL_USERNAME=sandboxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.org
# MAIL_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# MAIL_ENCRYPTION=tls
# MAIL_FROM_ADDRESS=xxxxxxxxxxxxxxxxxxxxxxxxx
# MAIL_FROM_NAME="${APP_NAME}"
# MAILGUN_SECRET=API private key
# MAILGUN_DOMAIN=sandboxxxxxxxxxxxxxxxxxxxxx.mailgun.org

# For sendinblue
# MAIL_DRIVER=smtp
# MAIL_HOST=smtp-relay.sendinblue.com
# MAIL_PORT=587
# MAIL_USERNAME=xxxxxxxxxxxxxxxxxxxxxx@gmail.com
# MAIL_PASSWORD=xxxxxxxxxxxxxxxxxxxxxx
# MAIL_ENCRYPTION=tls
# MAIL_FROM_ADDRESS=xxxxxxxxxxxxxxxxxxxxxx@gmail.com
# MAIL_FROM_NAME="${APP_NAME}"
Related