ক্লাস নংঃ-৬

ক্লাস নংঃ-৬

লারাভেল ই-মেইল নোটিফিকেশন

লারাভেল ই-মেইল নোটিফিকেশন প্যাকেজ।কিভাবে মেইল্ট্র্যাপ ব্যাবহার করে ইমেইল পাঠানো যায়,password reset করা যায়,এবং আমার প্রোজেক্ট এর কোন কাজ সম্পর্কে ইউজার কে ইনফরমেশন পাঠানোর জন্য কিভাবে আমরা নোটিফিকেশন বানাতে পারি এবং ইউজার কে সেটি পাঠাতেও পারি। এজন্য সেই মডেল এ $notifiable আছে কি না ভাল ভাবে দেখে নিতে হবে।ডিফল্টভাবে ইউজার মডেলে এই $notifiable টা রয়েছে।

তাহলে কিভাবে সেট করবেন আপনার মাইল্ট্র্যাপঃ

প্রথমেই আপনি mailtrap এর ওয়েবসাইটে গিয়ে যদি রেজিস্টার না করা থাকে তাহলে রেজিস্টার করে নেবেন।আর যদি রেজিস্টার করা থাকে লগিন করে নেবেন। এবং সেখানে একটি ইনবক্স তৈরি করবেন। এবার আপনার ইনবক্স এ ক্লিক করবেন এবং smtp settings এ গিয়ে একটা অপশন পাবেন cURL এখানে ক্লিক করে আপনার প্রজেক্ট এর জন্য বেছে নিন। যেহেতু আপনি লারাভেল এর জন্য করছেন তাই সেখানে লারাভেল সিলেক্ট করুন।

এবার দেখবেন কিছু কোড দেওয়া আছে সেগুলো কপি করুন এবং আপনার .env file এ MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null

এই কোড এর যায়গাতে replace করুন।

এবার আপনার প্রজেক্ট ব্রাউজারে ওপেন করুন এবং চেক করুন।

কিভাবে আপনার জন্য কাস্টম নোটিফিকেশন তৈরি করবেন।

প্রথমেই আপনার কমান্ড লাইনে গিয়ে php artisan make:notification notification_name এই কমান্ড টি রান করলে আপনার জন্য একটি নোটিফিকেশন তৈরি হবে।

এবার আপনি web.php file এ যাবেন এবং আপনি আপনার টেস্ট এর জন্য একটি রাউট তৈরি করবেন controller বাদে। //created test notification route Route::get('/notification-test',function(){

$user = \Illuminate\Support\Facades\Auth::user();

$user->notify(new PostCreated); return'ok'; });

এবার আপনি ব্রাউজারে রান করলে সেটি রান হবে।

কিভাবে আপনি আপনার ই-মেইল মডিফাই করবেনঃ

এরজন্য প্রথমেই আপনাকে আপনার যে notification class তৈরি করলেন সেখানে যাবেন। এবং সেখানে public function toMail($notifiable) { return (new MailMessage) ->subject('New Post Created!') ->line('The introduction to the notification.') ->action('Notification Action', url('/')) ->line('Thank you for using our application!'); }

এই ফাংশন এর মধ্যে আপনার প্রয়োজন মত মডিফাই করতে পারবেন। যেমন মেইলের subject:->subject('New Post Created!')

আরো বিস্তারিত ভাবে জানতে এই লিংকে গিয়ে পড়ে নিতে পারেনঃ https://laravel.com/docs/9.x/notifications

কিভাবে controller থেকে ডাটা পাঠাবেন আপনার ইমেইলেঃ

প্রথমেই ইউজার একটা variable এর মধ্যে ডেটা স্টোর করে রাখবেন এবং পরবর্তিতে user কে notify function এর মধ্যে নতুন করে ক্লাস নিয়ে তার মধ্যে আপনি $post variable er object কে পাঠিয়ে দেবেন।অবশ্যই মনে রাখবেন এটা যেন ঠিক ভাবে দিতে পেরেছেন। $user = Auth::user(); $user->notify(new PostCreated($post));

এরপর আপনার কাস্টম মেইলে গিয়ে একটা পাল্বিক প্রপারটি তৈরি করবেন। public $post; আপনার constructor এ ডেটা recive করবেন এবং পরবর্তিতে ডেটা সেট করবেন। public function __construct($post) { $this->post = $post; }

এবং ফাইনালি আপনার মেইল মডিফিকেশন করবেন।

public function toMail($notifiable) {

return (new MailMessage)

->subject('New Post Created')

->line('The introduction to the notification.')

->action('Click here to view the post', route('edit-post', $this->post->id)) ->line('Thank you for using our application!');

}

এটা ই-মেইল নোটিফিকেশন এর ব্যাসিক ক্লাস advance and standard class আমাদের ই-মেইল দিয়ে নেওয়া হবে।

happy learning

___Rakibul Islam___