Step 1: Install Laravel
laravel new contact_mail
Step 2: Make Configuration
২য় ধাপটি হল মেইল ড্রাইভার, মেইল হোস্ট, মেইল পোর্ট, মেইল ইউজারনেম এবং মেইল পাসওয়ার্ড সহ ইমেইল কনফিগারেশন যোগ করা, যাতে Laravel এই কনফিগারেশন ব্যবহার করে ইমেইল পাঠাতে পারে। আপনি নিচের ধাপগুলো অনুসরণ করে কনফিগারেশন যোগ করতে পারেন:
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=3fc5012654046d
MAIL_PASSWORD=b4c06ef4854cc4
MAIL_ENCRYPTION=tls
Step 3: Create Blade View
এই ধাপে, আমরা একটি ব্লেড ভিউ ফাইল তৈরি করবো এবং ইমেইল ইনপুট ফিল্ড লিখবো। “view” ফোল্ডারে নিম্নলিখিত ফাইলগুলি তৈরি করুন:
resources/views/index.blade.php
<!DOCTYPE html>
<html>
<head>
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}
* {box-sizing: border-box;}
input[type=text], select, textarea {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
margin-top: 6px;
margin-bottom: 16px;
resize: vertical;
}
input[type=submit] {
background-color: #04AA6D;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
.container {
border-radius: 5px;
background-color: #f2f2f2;
padding: 20px;
}
</style>
</head>
<body>
<h3 style="text-align: center">Contact Form</h3>
<div style="text-align: center; color: green">
@if(session()->has('status'))
{!! session()->get('status') !!}
@endif
</div>
<div class="container">
<form action="{{route('send-contact-mail')}}" method="post">
@csrf
<label for="name">Full Name</label>
<input type="text" id="name" name="name" placeholder="Your name..">
<label for="email">Email</label>
<input type="text" id="email" name="email" placeholder="Your last email..">
<label for="phone">Phone</label>
<input type="text" id="phone" name="phone" placeholder="Your last phone..">
<label for="contact_message">Subject</label>
<textarea id="contact_message" name="contact_message" placeholder="Write something.." style="height:200px"></textarea>
<input type="submit" value="Submit">
</form>
</div>
<script>
$.ajaxSetup({
beforeSend: function(xhr, type) {
if (!type.crossDomain) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
}
},
});
</script>
</body>
</html>
Step 4: Change the Route from the web
routes/web.php
<?php
use App\Http\Controllers\ContactMailController;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('index');
})->name('home');
Step 5: Create Mail Class
এই ধাপে, আমি “NotifyMail” নামে একটি মেইল ক্লাস তৈরি করবো, যা ইমেইল পাঠানোর জন্য ব্যবহার করা হবে। এখানে view কল করা হবে এবং ব্যবহারকারীর অবজেক্ট কীভাবে পাস করা হবে তা কোডে লিখতে হবে।
এই ক্লাস তৈরি করতে নিচের কমান্ড চালান:
php artisan make:mail NotifyMail
app/Mail/NotifyMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class NotifyMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*/
public function __construct(public $name,public $email,public $phone,public $contact_message, )
{
//
}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Contact Inquiry Mail',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
view: 'get_mail_information',
with:['name'=>$this->name,'email'=>$this->email,'phone'=>$this->phone,'contact_message'=>$this->contact_message],
);
}
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [];
}
}
Step 6: Create Controller
এই ধাপে, আমরা “ContactMailController” তৈরি করবো এবং এর index()
মেথডে নির্দিষ্ট ইমেইল ঠিকানায় ইমেইল পাঠানোর জন্য কোড লিখবো।
নিচের কমান্ড চালিয়ে কন্ট্রোলার তৈরি করুন:
php artisan make:controller ContactMailController
আপনার ContactMailController.php
ফাইলে নিচের কোড আপডেট করুন:
<?php
namespace App\Http\Controllers;
use App\Mail\NotifyMail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class ContactMailController extends Controller
{
public function get_mail(Request $request){
$name = $request->name;
$email = $request->email;
$phone = $request->phone;
$contact_message = $request->contact_message;
$mess = "Thank you for contacting us. Our team will review your email and respond promptly.";
if($request->isMethod('POST')){
Mail::to(['[email protected]'])->send(new NotifyMail($name,$email,$phone,$contact_message));
return routeSendSuccessWithMessage('home', $mess);
}
}
}
function routeSendSuccessWithMessage($route, string $message = '<strong>Congratulations!!!</strong>'): \Illuminate\Http\RedirectResponse
{
$messageStatus = '<div class="alert alert-success alert-dismissible show" role="alert">
' . $message . '
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>';
return redirect()->route($route)->with('status', $messageStatus);
}
Step 7: Create Routes
এই ধাপে, আমরা ইমেইল পাঠানোর জন্য একটি রাউট তৈরি করব। এজন্য routes/web.php
ফাইলে নিচের রাউটটি যোগ করুন:
routes/web.php
<?php
use App\Http\Controllers\ContactMailController;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {return view('index');})->name('home');
Route::match(['get', 'post'], '/send-contact-mail', [ContactMailController::class, 'get_mail'])->name('send-contact-mail');
Step 8: Create Blade View
এই ধাপে, আমি একটি ব্লেড view ফাইল তৈরি করব এবং যেসব ইমেইল কনটেন্ট পাঠাতে চাই, সেগুলি লিখব। বর্তমানে, আমি কিছু ডামি টেক্সট দিয়ে শুরু করবো। view
ফোল্ডারে নিচের ফাইলটি তৈরি করুন:
resources/views/get_mail_information.blade.php
<!DOCTYPE html>
<html>
<head>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
<title>Touch and Solve</title>
</head>
<body>
<section style="background-color: whitesmoke">
<div class="container" style="background-color: white; box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px; padding: 15px" >
<h2 style="text-align: center; font-weight: bold">Clients Contact Message</h2>
<p><strong>Name:</strong> {{$name}}</p>
<p><strong>Email:</strong> {{$email}}</p>
<p><strong>Phone:</strong> {{$phone}}</p>
<p><strong>Message:</strong> {{$contact_message}}</p>
</div>
</section>
</body>
</html>
Run Laravel App:
সব প্রয়োজনীয় পদক্ষেপ সম্পন্ন হয়েছে, এবং এখন আপনাকে নিচের কমান্ডটি প্রবেশ করিয়ে এন্টার চাপতে হবে Laravel অ্যাপ্লিকেশনটি চালানোর জন্য.
php artisan serve
এখন, আপনার ওয়েব ব্রাউজারে যান, দেওয়া URL টাইপ করুন এবং অ্যাপ্লিকেশনের আউটপুট দেখুন: