Hello friends, welcome back to my blog. Today in this blog post, I am going to tell you, Reactjs Laravel 8 User Contact Form with Send Email Functionality.
For reactjs new comers, please check the below link:
Friends now I proceed onwards and here is the working code snippet for Reactjs Laravel 8 User Contact Form with Send Email Functionality and please use this carefully to avoid the mistakes:
1. Firstly friends we need fresh reactjs setup and for that we need to run below commands into our terminal and also w should have latest node version installed on our system:
npx create-react-app reactlaravel cd reactlaravel npm start // run the project
2. Now we need to run below commands to get bootstrap(for good layout), sweetalert and axios(to post data request to laravel) modules into our react js app:
npm install sweetalert2-react npm install bootstrap --save npm install axios --save npm start
3. Now friends we need to add below code into our src/App.js file to get final output on web browser:
import React from 'react'; import './App.css'; //bootstrap import 'bootstrap/dist/css/bootstrap.min.css'; //Include Sweetalert import Swal from 'sweetalert2' //axios for api request import axios from 'axios'; class AddUser extends React.Component { constructor(props) { super(props); this.addFormData = this.addFormData.bind(this); } // Mail Form Submission addFormData(evt) { evt.preventDefault(); const fd = new FormData(); fd.append('myUsername', this.refs.myUsername.value); fd.append('myEmail', this.refs.myEmail.value); fd.append('textquery', this.refs.textquery.value); axios.post('http://localhost/laravel8/public/api/send/email', fd ).then(res=> { this.myFormRef.reset(); //Success Message in Sweetalert modal Swal.fire({ title: 'Hurray!!', text: "Mail has been send successfully.", type: 'success', }); } ); } render() { return ( <div className="maincontainer"> <div className="container mb-5 mt-5 text-left"> <form ref={(el) => this.myFormRef = el}> <div className="form-group"> <input type="email" className="form-control" id="Email" aria-describedby="emailHelp" placeholder="Enter email" ref="myEmail" /> </div> <div className="form-group"> <input type="text" className="form-control" id="Username" placeholder="Enter Username" ref="myUsername" /> </div> <div className="form-group"> <textarea className="form-control" id="textquery" placeholder="Enter Query" ref="textquery"></textarea> </div> <button type="submit" className="btn btn-primary" onClick={this.addFormData}>Send Mail</button> </form> </div> </div> ) }; } export default AddUser;
Laravel Section Start
1.
a) Now friends we need to create `email` folder inside `resources/view folder
b) Now create new name.blade.php file inside resources/views/email folder
c) Now add below code into resources/views/ email/name.blade.php file
<div> Name : {{ $data1["Name"] }}<br> Email : {{ $data1["Email"] }}<br> Query : {{ $data1["Query"] }} </div>
2. Now friends, we need to add below code into our laravel 8 project routes/api.php file:
//Email Route which we used in angular http service Route::post('send/email', [App\Http\Controllers\HomeController::class, 'mail'])->name('email');
3. Now friends, we need to add below code into our laravel 8 project app/Http/Controllers/HomeController.php file:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; class HomeController extends Controller { ... public function mail(Request $request) { $data = [ 'Name' => $request->input('myUsername'), 'Email' => $request->input('myEmail'), 'Query' => $request->input('textquery') ]; //Mail Function Mail::send('email.name', ['data1' => $data], function ($m) { $m->to('therichposts@gmail.com')->subject('Contact Form Mail!'); }); //Json Response For Angular frontend return response()->json(["message" => "Email sent successfully."]); } }
6. Finally but not the last, we need to set mailgun credentials into our Laravel 8 project .env file:
MAIL_DRIVER=mailgun MAIL_HOST=smtp.mailgun.org MAIL_PORT=587 MAIL_USERNAME=************************************************** MAIL_PASSWORD=************************************************** MAIL_ENCRYPTION=tls
Now we are done friends and don’t forget to start your Laravel 8 project server also and If you have any kind of query or suggestion or any requirement then feel free to comment below.
Guys in this post, I am sending email from my reactjs front-end via Laravel 8 backend with the help of mailgun.
Note: Friends, I just tell the basic setup and things, you can change the code according to your requirements. For better understanding must watch video above.
I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad.
Jassa
Thanks
Recent Comments