JavaMail API ব্যবহার করে আপনি নির্দিষ্ট ফোল্ডার থেকে ই-মেইল গ্রহণ করতে পারেন, যেমন INBOX, Sent, বা অন্য কোন কাস্টম ফোল্ডার। JavaMail API এর মাধ্যমে POP3 বা IMAP প্রোটোকল ব্যবহার করে ই-মেইল সার্ভারের ফোল্ডার থেকে মেইলগুলি ফেচ করা যায়। সাধারণত IMAP প্রোটোকল বেশি ব্যবহৃত হয় কারণ এটি সার্ভারে মেইলগুলো রেখে অনলাইনে আর্কাইভ করার সুবিধা দেয়।
এখানে একটি উদাহরণ দেয়া হলো যেখানে IMAP প্রোটোকল ব্যবহার করে একটি নির্দিষ্ট ফোল্ডার থেকে ই-মেইল ফেচ করা হচ্ছে।
উদাহরণ: IMAP ব্যবহার করে নির্দিষ্ট ফোল্ডার থেকে ই-মেইল ফেচ করা
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
public class FetchEmailsFromFolder {
public static void main(String[] args) {
// IMAP সার্ভারের জন্য প্রপার্টি সেট করা
Properties properties = new Properties();
properties.put("mail.store.protocol", "imap"); // প্রোটোকল IMAP
properties.put("mail.imap.host", "imap.gmail.com"); // IMAP সার্ভারের ঠিকানা
properties.put("mail.imap.port", "993"); // IMAP পোর্ট (Gmail এর জন্য 993)
properties.put("mail.imap.ssl.enable", "true"); // SSL সক্ষম করা
// JavaMail সেশন তৈরি করা
Session session = Session.getDefaultInstance(properties);
try {
// স্টোর অবজেক্ট তৈরি করা এবং ই-মেইল সার্ভারের সাথে সংযোগ স্থাপন করা
Store store = session.getStore("imap");
store.connect("imap.gmail.com", "your-email@gmail.com", "your-email-password");
// নির্দিষ্ট ফোল্ডার (যেমন INBOX) পাওয়া
Folder folder = store.getFolder("INBOX"); // এখানে "INBOX" ফোল্ডার ব্যবহার করা হয়েছে
folder.open(Folder.READ_ONLY); // ফোল্ডার ওপেন করা (যে ফোল্ডারে ই-মেইল পড়ার অনুমতি আছে)
// ফোল্ডার থেকে মেইলগুলো পাওয়া
Message[] messages = folder.getMessages();
// মেইলগুলোর তথ্য প্রিন্ট করা
for (Message message : messages) {
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Date: " + message.getSentDate());
System.out.println("Text: " + message.getContent().toString());
System.out.println("---------------------------------------------");
}
// সংযোগ বন্ধ করা
folder.close(false);
store.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
- Properties:
mail.store.protocol: IMAP প্রোটোকল ব্যবহারের জন্য এটিimapসেট করা হয়।mail.imap.host: IMAP সার্ভারের ঠিকানা, যেমন Gmail-এর জন্যimap.gmail.com।mail.imap.port: IMAP সার্ভারের পোর্ট (Gmail এর জন্য993পোর্টটি SSL সক্রিয় থাকে)।mail.imap.ssl.enable: SSL এনক্রিপশন সক্রিয় করা।
- Session:
Session.getDefaultInstance(properties): JavaMail সেশন তৈরি করা।
- Store:
Store store = session.getStore("imap"): ই-মেইল সার্ভারের সাথে সংযোগ তৈরি করা, এখানে IMAP প্রোটোকল ব্যবহার করা হয়েছে।store.connect("imap.gmail.com", "your-email@gmail.com", "your-email-password"): IMAP সার্ভারে লগইন করা।
- Folder:
Folder folder = store.getFolder("INBOX"):INBOXফোল্ডার থেকে মেইল ফেচ করা। আপনি এখানে অন্য কোনো ফোল্ডার নামও ব্যবহার করতে পারেন, যেমন "Sent"।folder.open(Folder.READ_ONLY): ফোল্ডারটি শুধুমাত্র পড়ার জন্য ওপেন করা (ফোল্ডারটি যেগুলি আপনার মেইল সার্ভারে সংরক্ষিত আছে)।
- Message:
Message[] messages = folder.getMessages(): ফোল্ডার থেকে সমস্ত মেইল বার্তা নিয়ে আসা।message.getSubject(),message.getFrom(),message.getSentDate(), এবংmessage.getContent(): মেইলের বিষয়, প্রেরক, পাঠানোর তারিখ, এবং কনটেন্ট প্রিন্ট করা।
- Folder Close:
folder.close(false)এবংstore.close(): কাজ শেষ হলে ফোল্ডার এবং স্টোর ক্লোজ করা।
নির্দিষ্ট ফোল্ডার থেকে মেইল ফেচ করার কিছু অতিরিক্ত বিষয়:
- Custom Folders: আপনি যদি আপনার সার্ভারে একটি কাস্টম ফোল্ডার ব্যবহার করতে চান (যেমন "Drafts" বা "Sent"), আপনি সহজেই
store.getFolder("Sent")অথবা অন্য কোনো ফোল্ডারের নাম দিতে পারেন। - Message Filtering: আপনি নির্দিষ্ট শর্তে মেইল ফেচ করতে পারেন, যেমন শুধুমাত্র নির্দিষ্ট তারিখ বা নির্দিষ্ট প্রেরকের মেইল।
- Partial Fetch: যদি আপনার ফোল্ডারে অনেক মেইল থাকে, তবে আপনি
getMessages(int start, int end)ব্যবহার করে নির্দিষ্ট একটি রেঞ্জের মেইল ফেচ করতে পারেন।
Message[] messages = folder.getMessages(1, 10); // প্রথম 10টি মেইল ফেচ করা
JavaMail API ব্যবহার করে আপনি সহজেই IMAP প্রোটোকল দিয়ে আপনার মেইল সার্ভারের নির্দিষ্ট ফোল্ডার থেকে মেইল ফেচ করতে পারেন। এটি ই-মেইল প্রোগ্রামিং এর একটি শক্তিশালী এবং কার্যকরী উপায়, বিশেষ করে যখন আপনি মেইল সিস্টেমে একাধিক ফোল্ডার ব্যবস্থাপনা করতে চান।
Read more