Ruby on Rails-এ Mailer ক্লাস এবং Views ব্যবহার করে ইমেইল পাঠানো খুবই সহজ। Mailer ক্লাস অ্যাপ্লিকেশনের ইমেইল সংক্রান্ত লজিকের জন্য দায়িত্বশীল, এবং ইমেইল কনটেন্ট তৈরি করতে Views ব্যবহার করা হয়। Rails-এ ইমেইল পাঠানোর প্রক্রিয়া খুবই মসৃণ এবং কনফিগারেশন সহজ।
Mailer ক্লাস তৈরি করা
Rails-এ Mailer ক্লাস তৈরি করার জন্য, আপনি rails generate mailer কমান্ড ব্যবহার করতে পারেন। Mailer ক্লাস মূলত Ruby ক্লাস, যেটি ActionMailer মডিউল ইনহেরিট করে এবং ইমেইল সম্পর্কিত ফাংশনালিটি প্রদান করে।
Mailer ক্লাস তৈরি:
rails generate mailer UserMailer
এই কমান্ডটি app/mailers/user_mailer.rb ফাইল তৈরি করবে এবং একটি নতুন Mailer ক্লাস তৈরি করবে।
উদাহরণ Mailer ক্লাস:
class UserMailer < ApplicationMailer
default from: 'no-reply@example.com'
def welcome_email(user)
@user = user
@url = 'http://example.com/login'
mail(to: @user.email, subject: 'Welcome to My Awesome Site')
end
end
এখানে, UserMailer ক্লাসের মধ্যে welcome_email মেথডটি একটি নির্দিষ্ট user-কে ওয়েলকাম ইমেইল পাঠাবে। @user এবং @url ভ্যারিয়েবলগুলো ইমেইল কন্টেন্টে ব্যবহৃত হবে। mail মেথডটি ইমেইল পাঠানোর জন্য ব্যবহার করা হয়।
- default from: ইমেইলটি কোথা থেকে আসবে তা নির্ধারণ করে (যেমন no-reply@example.com)।
- mail(to:, subject:): এটি ইমেইল পাঠানোর জন্য ব্যবহার করা হয়, যেখানে প্রাপকের ইমেইল ঠিকানা এবং সাবজেক্ট উল্লেখ করা হয়।
Mailer Views তৈরি করা
Mailer Views হল ইমেইলের কন্টেন্টের টেমপ্লেট, যেগুলি ইমেইল মেসেজের কনটেন্ট তৈরি করে। Mailer ক্লাসের মধ্যে ডিফাইন করা মেথডগুলোর জন্য প্রতিটি অ্যাকশন অনুযায়ী View তৈরি করা হয়। Mailer Views app/views/user_mailer ফোল্ডারে থাকবে।
উদাহরণ:
welcome_email মেথডের জন্য একটি welcome_email.html.erb এবং welcome_email.text.erb নামের দুটি ভিউ ফাইল তৈরি করা যাবে। HTML ইমেইল এবং প্লেইনটেক্সট ইমেইল উভয়ের জন্য আলাদা আলাদা ভিউ তৈরি করা ভালো।
- HTML ইমেইল View:
app/views/user_mailer/welcome_email.html.erb
<!DOCTYPE html>
<html>
<body>
<h1>Welcome to My Awesome Site, <%= @user.name %>!</h1>
<p>Thanks for signing up. To get started, please <a href="<%= @url %>">login</a>.</p>
</body>
</html>
- Plain Text ইমেইল View:
app/views/user_mailer/welcome_email.text.erb
Welcome to My Awesome Site, <%= @user.name %>!
Thanks for signing up. To get started, please visit the following link to log in:
<%= @url %>
এখানে, @user.name এবং @url ভ্যারিয়েবলগুলো Mailer ক্লাস থেকে আসছে। HTML ইমেইলটি ফরম্যাটেড এবং কাস্টম স্টাইল করতে পারে, যখন Plain Text ইমেইলটি শুধুমাত্র সাধারণ টেক্সট হিসেবে প্রদর্শিত হবে।
ইমেইল পাঠানো
Mailer ক্লাস এবং Views প্রস্তুত হওয়ার পর, আপনি ইমেইল পাঠানোর জন্য একটি কন্ট্রোলার বা অ্যাপ্লিকেশন থেকে Mailer মেথড কল করতে পারবেন।
উদাহরণ কন্ট্রোলার থেকে ইমেইল পাঠানো:
class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
UserMailer.welcome_email(@user).deliver_later
redirect_to @user, notice: 'User was successfully created.'
else
render :new
end
end
end
এখানে, যখন কোনো ইউজার সফলভাবে সাইন আপ হয়, তখন UserMailer.welcome_email(@user).deliver_later মেথডটি কল করা হবে এবং ইমেইলটি পাঠানো হবে। deliver_later মেথডটি ইমেইলটি অ্যাসিনক্রোনাসলি (ব্যাকগ্রাউন্ডে) পাঠানোর জন্য ব্যবহৃত হয়, যাতে ইউজারের জন্য অ্যাপ্লিকেশন স্লো না হয়।
Mailer কনফিগারেশন
Rails অ্যাপ্লিকেশন থেকে ইমেইল পাঠানোর জন্য কিছু কনফিগারেশন সেটআপ করা প্রয়োজন। ইমেইল পাঠানোর জন্য সাধারণত SMTP সার্ভার ব্যবহৃত হয়। আপনি এই কনফিগারেশনটি config/environments/development.rb এবং config/environments/production.rb ফাইলে করতে পারেন।
উদাহরণ (SMTP কনফিগারেশন):
# config/environments/development.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
user_name: "your_email@gmail.com",
password: "your_password",
authentication: "plain",
enable_starttls_auto: true
}
এখানে, Gmail SMTP সার্ভার ব্যবহার করা হয়েছে। আপনি আপনার ইমেইল সার্ভারের কনফিগারেশন অনুযায়ী এই সেটিং পরিবর্তন করতে পারবেন।
সারমর্ম
Mailer ক্লাস এবং Views Rails-এ ইমেইল পাঠানোর একটি শক্তিশালী উপায়। Mailer ক্লাসটি ইমেইল পাঠানোর লজিক এবং কনফিগারেশন তৈরি করে, এবং Views ইমেইল কন্টেন্ট তৈরি করতে সাহায্য করে। Rails-এ Mailer ক্লাস তৈরি করা, ইমেইল কনটেন্টের ভিউ তৈরি করা এবং কন্ট্রোলার বা অন্য জায়গা থেকে ইমেইল পাঠানোর প্রক্রিয়া খুবই সহজ। SMTP কনফিগারেশন মাধ্যমে ইমেইল পাঠানো যায়, এবং deliver_later ব্যবহার করে অ্যাসিনক্রোনাসলি ইমেইল পাঠানো সম্ভব হয়, যা অ্যাপ্লিকেশনের পারফর্মেন্স উন্নত করে।
Read more