JavaMail API ব্যবহার করে আপনি সহজেই Web Application এর মধ্যে ইমেইল পাঠানোর ফিচার ইন্টিগ্রেট করতে পারেন। সাধারণত ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে যেমন কনফার্মেশন মেইল, নিউজলেটার, পাসওয়ার্ড রিসেট ইমেইল বা অন্যান্য প্রকারের ইমেইল পাঠানো হয়। JavaMail API এবং Web Application ইন্টিগ্রেটেশন একটি সাধারণ কাজ, যেখানে JavaMail API কে ওয়েব অ্যাপ্লিকেশনে অন্তর্ভুক্ত করা হয় যাতে ব্যবহারকারীরা মেইল সিস্টেম ব্যবহার করতে পারে।
এই গাইডে আমরা দেখবো কীভাবে JavaMail API ব্যবহার করে Web Application-এ ইমেইল পাঠানোর ফিচার অন্তর্ভুক্ত করা যায়। আমরা Servlet বা Spring Boot ব্যবহার করে একটি ওয়েব অ্যাপ্লিকেশন তৈরি করব এবং এতে ইমেইল পাঠানোর কার্যকারিতা যুক্ত করব।
এই উদাহরণে আমরা একটি Servlet তৈরি করবো যা JavaMail API ব্যবহার করে ইমেইল পাঠাবে। আমরা একটি সাধারণ ফর্ম ব্যবহার করবো যেখানে ব্যবহারকারী তাদের ইমেইল ঠিকানা প্রদান করবে এবং তারপর মেইল পাঠানোর জন্য সাবমিট করবে।
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
@WebServlet("/sendEmail")
public class EmailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String to = request.getParameter("email");
String subject = "Welcome to Our Website!";
String messageText = "Hello, welcome to our website! We are glad to have you.";
// SMTP Server Configuration
String host = "smtp.gmail.com";
final String user = "your-email@gmail.com";
final String password = "your-password";
// Set SMTP server properties
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
// Create a session with authentication
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
});
try {
// Create MimeMessage
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
message.setText(messageText);
// Send email
Transport.send(message);
response.getWriter().write("Email sent successfully!");
} catch (MessagingException e) {
e.printStackTrace();
response.getWriter().write("Error sending email: " + e.getMessage());
}
}
}
@WebServlet("/sendEmail")
দিয়ে Servlet এর URL পাথ সেট করা হয়েছে।MimeMessage
তৈরি করা হয়েছে এবং তারপর Transport.send()
মেথড ব্যবহার করে ইমেইল পাঠানো হয়েছে।<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Send Email</title>
</head>
<body>
<h2>Send Email</h2>
<form action="sendEmail" method="post">
<label for="email">Recipient Email:</label>
<input type="email" id="email" name="email" required>
<button type="submit">Send Email</button>
</form>
</body>
</html>
Spring Boot এর সাহায্যে JavaMail API ইন্টিগ্রেশন আরো সহজ এবং দ্রুত। এখানে আমরা Spring Boot ব্যবহার করে একটি ইমেইল পাঠানোর REST API তৈরি করবো।
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
public void sendEmail(String to, String subject, String body) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(body, true); // For HTML content
javaMailSender.send(mimeMessage);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EmailController {
@Autowired
private EmailService emailService;
@PostMapping("/sendEmail")
public String sendEmail(@RequestParam String to, @RequestParam String subject, @RequestParam String body) {
try {
emailService.sendEmail(to, subject, body);
return "Email sent successfully!";
} catch (Exception e) {
e.printStackTrace();
return "Error sending email: " + e.getMessage();
}
}
}
JavaMailSender
ব্যবহার করে ইমেইল পাঠানো হচ্ছে, যা Spring এর একটি ইন্টারফেস।POST
মেথড ব্যবহার করে ইমেইল পাঠায়।Bulk email প্রেরণ এবং Queue management সিস্টেম তৈরি করা:
JavaMail API ব্যবহার করে Web Applications এর মধ্যে ইমেইল পাঠানোর কার্যক্রম ইন্টিগ্রেট করা সহজ এবং কার্যকর। Servlet, Spring Boot অথবা অন্যান্য Java ভিত্তিক ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে আপনি SMTP, POP3, অথবা IMAP কনফিগারেশনের মাধ্যমে ইমেইল পাঠাতে পারেন। Bulk email প্রেরণ এবং Queue management এর জন্য নির্দিষ্ট কৌশল যেমন batching, rate limiting, এবং multithreading ব্যবহার করে আপনি সিস্টেমের কর্মক্ষমতা এবং নিরাপত্তা বাড়াতে পারেন।
Java Servlet ব্যবহার করে আপনি Java অ্যাপ্লিকেশন থেকে ইমেইল পাঠাতে পারেন। এই কাজটি করতে JavaMail API ব্যবহার করা হয়, যা Java অ্যাপ্লিকেশনগুলোকে ইমেইল প্রেরণ ও গ্রহণ করার সক্ষমতা দেয়। Java Servlet এর মাধ্যমে ইমেইল প্রেরণের পদ্ধতিটি সাধারণত ওয়েব অ্যাপ্লিকেশনে ব্যবহৃত হয়, যেখানে সার্ভার সাইড থেকে ইমেইল পাঠানোর প্রয়োজন হয়, যেমন কনফার্মেশন মেইল, পাসওয়ার্ড রিসেট, অথবা বিভিন্ন ধরনের নোটিফিকেশন।
এখানে একটি উদাহরণ দেওয়া হয়েছে যেখানে একটি Java Servlet থেকে ইমেইল পাঠানো হবে। এটি একটি সাধারণ POST রিকোয়েস্ট প্রসেস করে এবং তারপরে JavaMail API ব্যবহার করে ইমেইল প্রেরণ করবে।
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
public class SendEmailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
// ইমেইল প্রেরকের ডিটেইলস
String host = "smtp.gmail.com"; // SMTP সার্ভারের ঠিকানা (Gmail ব্যবহার করা হয়েছে)
final String user = "your-email@gmail.com"; // আপনার ইমেইল অ্যাড্রেস
final String password = "your-password"; // আপনার ইমেইল পাসওয়ার্ড
// রিসিপিয়েন্টের ইমেইল অ্যাড্রেস
String to = request.getParameter("to"); // ফর্ম থেকে প্রাপ্ত রিসিপিয়েন্ট ইমেইল অ্যাড্রেস
String subject = "Test Email from Java Servlet"; // ইমেইল বিষয়
String bodyText = "Hello, this is a test email sent from a Java Servlet."; // ইমেইল কন্টেন্ট
// SMTP প্রোপার্টি কনফিগারেশন
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587"); // Port for TLS/STARTTLS
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true"); // TLS এনক্রিপশন
// ইমেইল পাঠানোর জন্য Session তৈরি করা
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password); // প্রমাণীকরণ
}
});
try {
// MimeMessage তৈরি করা
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user)); // প্রেরকের ইমেইল
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // রিসিপিয়েন্টের ইমেইল
message.setSubject(subject); // বিষয়
message.setText(bodyText); // মেইল কন্টেন্ট
// মেইল পাঠানো
Transport.send(message); // মেইল পাঠানোর জন্য Transport.send() ব্যবহার করা হয়
// Success message to the user
response.getWriter().println("Email sent successfully!");
} catch (MessagingException e) {
e.printStackTrace();
response.getWriter().println("Error sending email: " + e.getMessage());
}
}
}
properties.put("mail.smtp.host", "smtp.gmail.com");
: এখানে smtp.gmail.com
ব্যবহার করা হয়েছে, তবে আপনি অন্য যেকোনো SMTP সার্ভার ব্যবহার করতে পারেন (যেমন Yahoo, Outlook ইত্যাদি)।properties.put("mail.smtp.port", "587");
: Gmail সার্ভারের জন্য TLS এনক্রিপশন পোর্ট 587
ব্যবহার করা হয়।properties.put("mail.smtp.starttls.enable", "true");
: TLS এনক্রিপশন সক্ষম করা হয়েছে।Session.getInstance(properties, new Authenticator() {...})
: এখানে Session
অবজেক্ট তৈরি করা হচ্ছে, যা সার্ভারের সাথে যোগাযোগ স্থাপন করতে সাহায্য করে। Authenticator ক্লাসের মাধ্যমে ইমেইল প্রেরকের ইউজারনেম এবং পাসওয়ার্ড প্রদান করা হয়েছে।MimeMessage
ব্যবহার করে একটি মেইল তৈরি করা হয়েছে। মেইলের প্রেরক, রিসিপিয়েন্ট, বিষয় এবং কন্টেন্ট সেট করা হয়েছে।Transport.send(message);
: এই মেথড দ্বারা ইমেইল প্রেরণ করা হচ্ছে।এই Servlet এর কার্যক্রম web.xml ফাইলে কনফিগার করা যায়।
<web-app>
<servlet>
<servlet-name>SendEmailServlet</servlet-name>
<servlet-class>SendEmailServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SendEmailServlet</servlet-name>
<url-pattern>/sendEmail</url-pattern>
</servlet-mapping>
</web-app>
এই কনফিগারেশন অনুযায়ী, /sendEmail
URL এর মাধ্যমে Servlet কার্যকরী হবে। এখন আপনি একটি HTML ফর্ম তৈরি করে POST রিকোয়েস্ট পাঠিয়ে এই Servlet কল করতে পারবেন।
<!DOCTYPE html>
<html>
<body>
<h2>Send Email</h2>
<form action="sendEmail" method="POST">
To: <input type="text" name="to"><br><br>
<input type="submit" value="Send Email">
</form>
</body>
</html>
এই ফর্মটি /sendEmail
URL এ POST রিকোয়েস্ট পাঠাবে, যা Servlet দ্বারা ইমেইল প্রেরণ করবে।
Java Servlet এর মাধ্যমে ইমেইল প্রেরণ একটি সাধারণ এবং কার্যকরী পদ্ধতি। JavaMail API ব্যবহার করে সার্ভারের মাধ্যমে ইমেইল পাঠানো যায়, এবং প্রমাণীকরণের মাধ্যমে নিশ্চিত করা যায় যে ইমেইলটি একটি বৈধ প্রেরকের পক্ষ থেকে আসছে। এই উদাহরণে SMTP সার্ভার কনফিগারেশন, Session তৈরি করা, MimeMessage ব্যবহার এবং Email পাঠানোর প্রক্রিয়া দেখানো হয়েছে। Java Servlet এর মাধ্যমে আপনি ওয়েব অ্যাপ্লিকেশন থেকে ইমেইল প্রেরণ করতে পারেন এবং ব্যবহারকারীর সুবিধার্থে এটি একটি ওয়েব ফর্মের মাধ্যমে ইন্টারফেসও তৈরি করতে পারেন।
JavaMail API ব্যবহার করে আপনি ওয়েব ফর্ম থেকে ইমেইল পাঠানোর একটি কার্যকরী ব্যবস্থা তৈরি করতে পারেন। একটি সাধারণ ওয়েব অ্যাপ্লিকেশনে ব্যবহারকারীরা ফর্ম পূরণ করার পর, সেই ডেটা ব্যবহার করে JavaMail API এর মাধ্যমে ইমেইল প্রেরণ করা হয়। এটি সাধারণত contact form, feedback form, বা registration form এর জন্য ব্যবহৃত হয়, যেখানে ব্যবহারকারীর ইনপুট পাঠানো হয়।
নিচে একটি উদাহরণ দেখানো হয়েছে যেখানে একটি web form থেকে JavaMail ব্যবহার করে ইমেইল প্রেরণ করা হয়েছে। আমরা এখানে একটি Servlet ব্যবহার করব যা ওয়েব ফর্ম থেকে ডেটা গ্রহণ করে এবং JavaMail API এর মাধ্যমে ইমেইল পাঠায়।
প্রথমে, একটি ওয়েব ফর্ম তৈরি করতে হবে যা ব্যবহারকারীর ইনপুট নিবে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Form</title>
</head>
<body>
<h2>Contact Us</h2>
<form action="sendEmail" method="POST">
<label for="name">Name:</label><br>
<input type="text" id="name" name="name" required><br><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email" required><br><br>
<label for="message">Message:</label><br>
<textarea id="message" name="message" required></textarea><br><br>
<input type="submit" value="Send Message">
</form>
</body>
</html>
এখন, একটি Java Servlet তৈরি করতে হবে যা ফর্ম থেকে ডেটা গ্রহণ করবে এবং JavaMail API এর মাধ্যমে ইমেইল পাঠাবে।
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class SendEmailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Get form data
String name = request.getParameter("name");
String email = request.getParameter("email");
String messageContent = request.getParameter("message");
// Set up the email properties
String host = "smtp.gmail.com";
final String user = "your-email@gmail.com"; // Sender's email
final String password = "your-password"; // Sender's email password
String to = "recipient-email@example.com"; // Recipient's email
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
// Get the session object for email sending
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
});
try {
// Create the email message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Contact Form Submission from " + name);
message.setText("Name: " + name + "\nEmail: " + email + "\nMessage: " + messageContent);
// Send the email
Transport.send(message);
System.out.println("Email sent successfully!");
// Respond to the user
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body><h3>Thank you, " + name + ". Your message has been sent successfully!</h3></body></html>");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
request.getParameter()
ব্যবহার করে গ্রহণ করা হয়েছে। এখানে name, email, এবং message ফিল্ডের ডেটা গ্রহণ করা হচ্ছে।mail.smtp.host
: SMTP সার্ভারের ঠিকানা (যেমন, Gmail এর জন্য smtp.gmail.com
)।mail.smtp.port
: SMTP পোর্ট নম্বর (যেমন, 587
এর জন্য TLS বা 465
SSL এর জন্য)।mail.smtp.auth
: প্রমাণীকরণের জন্য true
সেট করা হয়েছে।mail.smtp.starttls.enable
: TLS এনক্রিপশন সক্ষম করতে true
সেট করা হয়েছে।MimeMessage
তৈরি করে, ইমেইল মেসেজের প্রেরক, রিসিপিয়েন্ট, বিষয় এবং কনটেন্ট সেট করা হয়েছে।Transport.send()
মেথড ব্যবহার করা হয়েছে।Servletটি ওয়েব অ্যাপ্লিকেশনে ব্যবহারের জন্য web.xml কনফিগারেশন ফাইলে যোগ করতে হবে।
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>SendEmailServlet</servlet-name>
<servlet-class>SendEmailServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SendEmailServlet</servlet-name>
<url-pattern>/sendEmail</url-pattern>
</servlet-mapping>
</web-app>
<servlet>
: SendEmailServlet কে ওয়েব অ্যাপ্লিকেশনের একটি সার্ভলেট হিসেবে রেজিস্টার করা হয়েছে।<servlet-mapping>
: /sendEmail
URL প্যাটার্নের জন্য SendEmailServlet কে ম্যাপ করা হয়েছে। এই প্যাটার্নের মাধ্যমে ফর্ম সাবমিট করা হলে Servlet কল হবে।JavaMail API ব্যবহার করে Web Form থেকে ইমেইল প্রেরণের প্রক্রিয়াটি অত্যন্ত সহজ এবং কার্যকরী। একটি Servlet তৈরি করে, ওয়েব ফর্ম থেকে ইনপুট গ্রহণ করা হয় এবং সেই ইনপুটকে ব্যবহার করে JavaMail API এর মাধ্যমে ইমেইল পাঠানো হয়। এই পদ্ধতিটি contact form, feedback form, registration form ইত্যাদিতে ব্যবহার করা যেতে পারে।
এই উদাহরণে, আমরা SMTP সার্ভার (যেমন Gmail) ব্যবহার করেছি, তবে আপনি অন্য যেকোনো SMTP সার্ভার ব্যবহার করতে পারবেন যেটি JavaMail সমর্থন করে।
Spring Framework এর মাধ্যমে JavaMail Integration সহজ এবং কার্যকরী উপায়ে ইমেইল পাঠানোর সুবিধা প্রদান করে। Spring Mail মডিউল JavaMail API এর উপর ভিত্তি করে কাজ করে এবং এটি ইমেইল পাঠানো, গ্রহণ করা, এবং সম্পর্কিত কার্যক্রম সহজ করে তোলে।
Spring Framework এর মধ্যে JavaMailSender ব্যবহার করে ইমেইল পাঠানো হয়। এটি Spring এর একটি ইন্টারফেস যা ইমেইল পাঠানোর জন্য JavaMail API কে আড়াল করে এবং সহজ ব্যবহার নিশ্চিত করে।
Spring Boot একটি জনপ্রিয় ফ্রেমওয়ার্ক যা আপনাকে খুব সহজে Spring অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। Spring Boot এর মাধ্যমে JavaMail integration খুবই সহজ। প্রথমে, Maven বা Gradle এর মাধ্যমে Spring Boot Mail Starter ডিপেনডেন্সি যোগ করতে হবে।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Spring Boot অ্যাপ্লিকেশনের application.properties
ফাইলে ইমেইল সার্ভারের কনফিগারেশন দিতে হবে।
application.properties:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-email-password
spring.mail.protocol=smtp
spring.mail.smtp.auth=true
spring.mail.smtp.starttls.enable=true
এখানে, spring.mail.host
এবং অন্যান্য প্রপার্টিগুলি SMTP সার্ভারের কনফিগারেশন। আপনি যদি Gmail ব্যবহার করেন, তবে এই কনফিগারেশনটি কার্যকর হবে। অন্য সার্ভিস ব্যবহার করলে সেগুলির কনফিগারেশন সেট করতে হবে।
Spring Boot ইমেইল পাঠানোর জন্য JavaMailSender ইন্টারফেসটি ব্যবহৃত হয়। আপনাকে @Configuration
ক্লাসে একটি JavaMailSender
Bean তৈরি করতে হবে।
MailConfig.java:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@Configuration
public class MailConfig {
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername("your-email@gmail.com");
mailSender.setPassword("your-email-password");
java.util.Properties props = mailSender.getJavaMailProperties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
return mailSender;
}
}
এখানে JavaMailSenderImpl
ক্লাসটি Spring Mail এর মাধ্যমে ইমেইল পাঠানোর জন্য কনফিগারেশন প্রদান করে। এটি JavaMailSender
ইন্টারফেসের বাস্তবায়ন।
একটি EmailService
ক্লাস তৈরি করা হবে যেখানে ইমেইল পাঠানোর লজিক থাকবে। এখানে Spring Boot Mail Starter এর JavaMailSender ব্যবহার করা হবে।
EmailService.java:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Autowired
private JavaMailSender emailSender;
public void sendSimpleMessage(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("your-email@gmail.com");
message.setTo(to);
message.setSubject(subject);
message.setText(text);
emailSender.send(message);
}
}
এখানে:
JavaMailSender
: ইমেইল পাঠানোর জন্য ব্যবহৃত প্রধান অবজেক্ট।SimpleMailMessage
: একটি সহজ টেক্সট ইমেইল তৈরি করতে ব্যবহৃত ক্লাস।sendSimpleMessage
: এই মেথডটি একটি সাধারণ ইমেইল পাঠাতে ব্যবহৃত হয়।এখন, একটি Controller তৈরি করা হবে যেখানে আপনি ইমেইল পাঠানোর জন্য একটি HTTP API তৈরি করতে পারবেন।
EmailController.java:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EmailController {
@Autowired
private EmailService emailService;
@GetMapping("/send-email")
public String sendEmail(@RequestParam String to, @RequestParam String subject, @RequestParam String body) {
emailService.sendSimpleMessage(to, subject, body);
return "Email sent successfully!";
}
}
এখানে একটি GET
API তৈরি করা হয়েছে, যা URL থেকে ইমেইল পাঠানোর জন্য to, subject, এবং body প্যারামিটার নেবে এবং তারপর সেই তথ্য দিয়ে ইমেইল পাঠাবে।
এখন, আপনি Spring Boot Application চালু করতে পারেন। ইমেইল পাঠানোর জন্য ব্রাউজারে বা Postman এ URL http://localhost:8080/send-email?to=recipient@example.com&subject=Test&body=Hello%20World
প্রবেশ করুন।
Spring Framework এর মাধ্যমে JavaMail Integration সহজেই করা যায়। Spring Boot Mail Starter ব্যবহার করে আপনি সহজেই JavaMailSender সেটআপ করতে পারেন এবং ইমেইল পাঠানোর কাজটি খুব সহজভাবে পরিচালনা করতে পারেন। এছাড়াও, Spring-এর @Autowired
এবং @Service
অ্যানোটেশন ব্যবহার করে, আপনার ইমেইল পাঠানোর লজিক এবং কনফিগারেশনকে একীভূত করে একটি পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশন তৈরি করা সম্ভব।
এটি ব্যবহার করে আপনি:
JavaMail API এবং Spring Framework ব্যবহার করে একটি Contact Form থেকে ইমেইল পাঠানোর প্রক্রিয়া তৈরি করা যেতে পারে। এতে, ব্যবহারকারীরা একটি ওয়েব ফর্মে তাদের নাম, ইমেইল, মেসেজ ইনপুট করবেন, এবং তারপর সেই তথ্য দিয়ে একটি ইমেইল পাঠানো হবে। Spring Framework ব্যবহার করলে আপনি এই প্রক্রিয়াটিকে আরো সহজ এবং কার্যকরীভাবে ইমপ্লিমেন্ট করতে পারবেন।
এই উদাহরণে, আমরা Spring Boot এবং JavaMail API ব্যবহার করে একটি কন্টাক্ট ফর্ম থেকে ইমেইল পাঠানোর একটি সাধারণ অ্যাপ্লিকেশন তৈরি করব।
Spring Boot প্রজেক্টে JavaMail ইন্টিগ্রেট করতে প্রথমে Maven ব্যবহার করে প্রজেক্ট তৈরি করতে হবে এবং এর মধ্যে spring-boot-starter-mail
ডিপেনডেন্সি যুক্ত করতে হবে।
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
এখন, application.properties
ফাইলে SMTP কনফিগারেশন দিন। এখানে আমরা Gmail এর SMTP সার্ভার ব্যবহার করব।
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-email-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
এই ক্লাসটি HTTP রিকোয়েস্ট গ্রহণ করবে এবং ফর্ম ডেটা প্রক্রিয়া করবে।
package com.example.emailapp.controller;
import com.example.emailapp.service.EmailService;
import com.example.emailapp.model.ContactForm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
public class ContactFormController {
@Autowired
private EmailService emailService;
@GetMapping("/contact")
public String showContactForm(Model model) {
model.addAttribute("contactForm", new ContactForm());
return "contact";
}
@PostMapping("/sendEmail")
public String sendEmail(@ModelAttribute ContactForm contactForm, Model model) {
// Email প্রেরণ করার জন্য service কল করা
emailService.sendEmail(contactForm);
model.addAttribute("message", "Email sent successfully!");
return "contact";
}
}
এই ক্লাসটি ইমেইল পাঠানোর জন্য JavaMail API ব্যবহার করবে।
package com.example.emailapp.service;
import com.example.emailapp.model.ContactForm;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
@Service
public class EmailService {
private final JavaMailSender javaMailSender;
public EmailService(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public void sendEmail(ContactForm contactForm) {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo("recipient-email@example.com"); // প্রাপকের ইমেইল
helper.setSubject("Contact Form Submission: " + contactForm.getSubject());
helper.setText("Name: " + contactForm.getName() + "\n" +
"Email: " + contactForm.getEmail() + "\n" +
"Message: " + contactForm.getMessage());
// ইমেইল পাঠানো
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
এই ক্লাসটি কন্টাক্ট ফর্মের ইনপুট ডেটা ধারণ করবে।
package com.example.emailapp.model;
public class ContactForm {
private String name;
private String email;
private String subject;
private String message;
// Getter and Setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
এখন, ফর্ম ডেটা গ্রহণের জন্য একটি HTML ফর্ম তৈরি করা হবে, যা Thymeleaf টেমপ্লেট ইঞ্জিন ব্যবহার করবে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Form</title>
</head>
<body>
<h1>Contact Us</h1>
<form action="/sendEmail" method="POST">
<label for="name">Name:</label><br>
<input type="text" id="name" name="name" required><br><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email" required><br><br>
<label for="subject">Subject:</label><br>
<input type="text" id="subject" name="subject" required><br><br>
<label for="message">Message:</label><br>
<textarea id="message" name="message" rows="4" required></textarea><br><br>
<button type="submit">Send</button>
</form>
<div>
<p th:text="${message}"></p> <!-- Message for successful email submission -->
</div>
</body>
</html>
আপনার Spring Boot অ্যাপ্লিকেশন রান করার জন্য একটি প্রধান ক্লাস প্রয়োজন।
package com.example.emailapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class EmailAppApplication {
public static void main(String[] args) {
SpringApplication.run(EmailAppApplication.class, args);
}
}
EmailService
ক্লাসে পাঠায়। এখানে GET
এবং POST
রিকোয়েস্ট হ্যান্ডলিং করা হয়েছে।JavaMailSender
ব্যবহার করে ইমেইল তৈরি করে এবং প্রেরণ করে।contact.html
ফর্ম UI তৈরি করে যেখানে ব্যবহারকারী তার নাম, ইমেইল, বিষয় এবং মেসেজ ইনপুট করতে পারে।এই উদাহরণে আমরা দেখিয়েছি কিভাবে Spring Framework এবং JavaMail API ব্যবহার করে Contact Form থেকে ইমেইল পাঠানো যায়। Spring Boot এর সাহায্যে ইমেইল পাঠানো একটি সহজ প্রক্রিয়া হয়ে ওঠে এবং Thymeleaf এর মাধ্যমে ফর্ম গ্রহণ এবং UI তৈরি করা সহজ হয়ে যায়।
Read more