Practical উদাহরণ: Contact Form থেকে Email প্রেরণ

JavaMail API এবং Web Application Integration - জাভা মেইল এপিআই (JavaMail API) - Java Technologies

276

JavaMail API এবং Spring Framework ব্যবহার করে একটি Contact Form থেকে ইমেইল পাঠানোর প্রক্রিয়া তৈরি করা যেতে পারে। এতে, ব্যবহারকারীরা একটি ওয়েব ফর্মে তাদের নাম, ইমেইল, মেসেজ ইনপুট করবেন, এবং তারপর সেই তথ্য দিয়ে একটি ইমেইল পাঠানো হবে। Spring Framework ব্যবহার করলে আপনি এই প্রক্রিয়াটিকে আরো সহজ এবং কার্যকরীভাবে ইমপ্লিমেন্ট করতে পারবেন।

প্র্যাকটিক্যাল উদাহরণ: Contact Form থেকে Email প্রেরণ

এই উদাহরণে, আমরা Spring Boot এবং JavaMail API ব্যবহার করে একটি কন্টাক্ট ফর্ম থেকে ইমেইল পাঠানোর একটি সাধারণ অ্যাপ্লিকেশন তৈরি করব।

ধাপ ১: Spring Boot Project তৈরি এবং JavaMail Dependency অন্তর্ভুক্ত করা

Spring Boot প্রজেক্টে JavaMail ইন্টিগ্রেট করতে প্রথমে Maven ব্যবহার করে প্রজেক্ট তৈরি করতে হবে এবং এর মধ্যে spring-boot-starter-mail ডিপেনডেন্সি যুক্ত করতে হবে।

pom.xml - ডিপেনডেন্সি:

<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 কনফিগারেশন:

এখন, 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

ধাপ ২: Spring Boot Controller এবং Service তৈরি করা

ContactFormController.java - কন্ট্রোলার ক্লাস:

এই ক্লাসটি 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";
    }
}

EmailService.java - সার্ভিস ক্লাস:

এই ক্লাসটি ইমেইল পাঠানোর জন্য 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();
        }
    }
}

ContactForm.java - মডেল ক্লাস:

এই ক্লাসটি কন্টাক্ট ফর্মের ইনপুট ডেটা ধারণ করবে।

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 Template)

এখন, ফর্ম ডেটা গ্রহণের জন্য একটি HTML ফর্ম তৈরি করা হবে, যা Thymeleaf টেমপ্লেট ইঞ্জিন ব্যবহার করবে।

contact.html - HTML ফর্ম:

<!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 Application ক্লাস

আপনার 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);
    }
}

এখানে কী হচ্ছে?

  1. ContactFormController: এটি HTTP রিকোয়েস্ট গ্রহণ করে এবং ব্যবহারকারী থেকে ডেটা নিয়ে EmailService ক্লাসে পাঠায়। এখানে GET এবং POST রিকোয়েস্ট হ্যান্ডলিং করা হয়েছে।
  2. EmailService: ইমেইল পাঠানোর লজিক এখানে আছে। এটি JavaMailSender ব্যবহার করে ইমেইল তৈরি করে এবং প্রেরণ করে।
  3. ContactForm: এই ক্লাসটি কন্টাক্ট ফর্মের ইনপুট ডেটা ধারণ করে এবং এটি ডেটা ট্রান্সফার অবজেক্ট (DTO) হিসেবে কাজ করে।
  4. Thymeleaf Template: contact.html ফর্ম UI তৈরি করে যেখানে ব্যবহারকারী তার নাম, ইমেইল, বিষয় এবং মেসেজ ইনপুট করতে পারে।

এই উদাহরণে আমরা দেখিয়েছি কিভাবে Spring Framework এবং JavaMail API ব্যবহার করে Contact Form থেকে ইমেইল পাঠানো যায়। Spring Boot এর সাহায্যে ইমেইল পাঠানো একটি সহজ প্রক্রিয়া হয়ে ওঠে এবং Thymeleaf এর মাধ্যমে ফর্ম গ্রহণ এবং UI তৈরি করা সহজ হয়ে যায়।

Content added By
Promotion

Are you sure to start over?

Loading...