3

why am i getting this error when i try to send an email from the contact from to my mailtrap Error message image

Here is my web routes routes\web.php

Route::get('contact','ContactFormController@create');

Route::post('contact','ContactFormController@store');

Here is my .env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:4Lxefu/REQw/cgLLiwCkXD5HPV6HbbwzRF93N1ZNYvI=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=f65b067cdc6edc
MAIL_PASSWORD=3556eea6c9ad58
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

Here is my Controller app\Http\Controllers\ContactFormController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

// ! IMPORT
use App\Mail\ContactFormMail;
use Illuminate\Support\Facades\Mail;

class ContactFormController extends Controller
{
    //

    public function create(){
        return view('contact.create');
    }

    public function store(){

        $data = request()->validate([
             'name'=> 'required',
             'email'=> 'required|email',
             'message'=> 'required',
        ]);

        // ! Create Mail here

        Mail::to('[email protected]')->send(new ContactFormMail());
        // dd(request()->all());
    }
}

Here is my contact.blade.php resources\views\contact\create.blade.php

@extends('layouts.app')

@section('content')
   <div class="container">
       <div class="card">
           <div class="card-body">
            <div class="card-title"><h1>Contact Form Email</h1></div>
                 <form action="/contact" method="POST">
                <div class="form-group">
                    <label for="name">Name</label>
                    <input type="text" name="name" value="{{old('name')}}" class=" form-control">
                    <div>{{$errors->first('name')}}</div>
                </div>

                <div class="form-group">
                    <label for="email">Email</label>
                    <input type="email" name="email" value="{{old('email')}}" class=" form-control">
                    <div>{{$errors->first('email')}}</div>
                </div>

                <div class="form-group">
                    <label for="message">Message</label>
                <textarea name="message" id="message" cols="30" rows="10" class=" form-control"></textarea>
                    <div>{{$errors->first('message')}}</div>
                </div>
                @csrf
                <button type="submit" class="btn btn-primary">Send Message</button>
            </form>
            </div>
       </div>
   </div>
@endsection

Here is my contact-form.blade.php resources\views\emails\contact\contact-form.blade.php

@component('mail::message')
# Introduction

The body of your message.

@component('mail::button', ['url' => ''])
Button Text
@endcomponent

Thanks,<br>
{{ config('app.name') }}
@endcomponent

Here is my Mail app\Mail\ContactFormMail.php

<?php

namespace App\Mail;

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

class ContactFormMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.contact.contact-form');
    }
}

Please check if i have done something incorrect, and do i need to host this application in order to the mail functionality to work on mailtrap ? Error Message image attached above.

3 Answers 3

4

Give a proper from address to the mail in ContactFormMail like,

return $this->markdown('emails.contact.contact-form')->from('[email protected]', 'Example');

or you can also configure it in .env like,

[email protected]
MAIL_FROM_NAME=Example
Sign up to request clarification or add additional context in comments.

1 Comment

Happy to hear :)
2
MAIL_FROM_ADDRESS=null

As the error said the sender address is missing, you need to change it to something, so it's not null.

Comments

1

Perferct way:

  1. Add example values MAIL_FROM_ADDRESS and MAIL_FROM_NAME to .env
  2. Use php artisan config:clear
  3. Restart service CMD Ctrl+C php artisan serve

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.