Free Java API for Sending Simple & HTML-based Emails

Open Source Java Email Processing API to Create and Send Text and HTML-based Email Messages with Attachments, Embedded Images, SMTP, IMAP, POP3 Protocol Support abd Advanced Security support.

ما هو JavaMail؟

في عالم تطبيقات المؤسسات والأنظمة الآلية، القدرة على إرسال واستلام رسائل البريد الإلكتروني برمجيًا ليست مجرد ميزة—إنها ضرورة. من إرسال إعادة تعيين كلمات المرور وتأكيد الطلبات إلى معالجة تذاكر الدعم الواردة، يُعد دمج البريد الإلكتروني ميزة أساسية. بالنسبة لمطوري جافا، كان حجر الأساس لهذه الوظيفة هو واجهة برمجة تطبيقات JavaMail المفتوحة المصدر والموثوقة. ستستعرض هذه الصفحة الشاملة واجهة برمجة تطبيقات JavaMail، ميزاتها القوية، وتقدم أمثلة شفرة عملية لتبدأ دمج البريد الإلكتروني في تطبيقات جافا الخاصة بك.

واجهة برمجة تطبيقات JavaMail هي إطار عمل ناضج ومفتوح المصدر تقدمه Oracle (سابقًا Sun Microsystems) يوفر إطارًا مستقلًا عن المنصة والبروتوكول لبناء تطبيقات البريد والرسائل. إنها الواجهة القياسية للتعامل مع البريد الإلكتروني في نظام جافا. تقوم بتجريد تعقيدات بروتوكولات البريد الأساسية مثل SMTP و POP3 و IMAP، مما يسمح للمطورين بالعمل عبر واجهة كائنية نظيفة. هناك العديد من الميزات المهمة في المكتبة، مثل إنشاء وإرسال رسائل HTML، إضافة مرفقات، إدراج صور مدمجة، محتوى متعدد الأجزاء، دعم قوي للمصادقة والأمان، دعم البريد القائم على المجلدات، تحسين البحث والفلترة، قراءة الرسائل عبر SMTP، وغيرها.

Previous Next

البدء مع JavaMail

أولًا، تحتاج إلى تثبيت JDK 1.6 أو أعلى. عليك إضافة تبعية Maven التالية في ملف pom.xml.

تبعية Maven

<dependency>
  <groupId>com.sun.mail</groupId>s;
  <artifactId>javax.mail</artifactId>
  <version>1.6.2</version>
</dependency>

يمكنك تنزيل المكتبة مباشرة من صفحة GitHub.

إرسال رسائل البريد الإلكتروني عبر مكتبة جافا

تتضمن مكتبة JavaMail المفتوحة المصدر دعمًا لإنشاء وإرسال رسائل بريد إلكتروني بسيطة وكذلك رسائل HTML داخل تطبيقات جافا. يمكن للمطورين قراءة رسائل البريد الموجودة، إضافة ملفات وصور كمرفقات، إرسال بريد إلى عدة مستلمين، إضافة رؤوس مخصصة، وأكثر. تحتاج إلى تعريف معلمات الاتصال مثل المضيف، المنفذ، وعلامات تمكين المصادقة وTLS. يوضح المثال التالي كيفية إرسال بريد نصي أساسي باستخدام خادم SMTP (مثل Gmail) داخل تطبيقات جافا.

كيفية إرسال بريد نصي أساسي باستخدام خادم SMTP عبر واجهة برمجة تطبيقات جافا؟


import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class SimpleEmailSender {

    public static void main(String[] args) {
        // Sender's and recipient's email ID
        String from = "your.email@gmail.com";
        String to = "recipient.email@example.com";
        
        // SMTP server configuration (for Gmail)
        String host = "smtp.gmail.com";
        final String username = "your.email@gmail.com";
        final String password = "your-app-password"; // Use an App Password for Gmail

        // Setup mail server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true"); // Use TLS
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "587");

        // Get the Session object and pass username and password
        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {
            // Create a default MimeMessage object
            Message message = new MimeMessage(session);
            
            // Set From: header field
            message.setFrom(new InternetAddress(from));
            
            // Set To: header field
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            
            // Set Subject: header field
            message.setSubject("Hello from JavaMail API");
            
            // Set the actual message body
            message.setText("This is a test email sent programmatically using the JavaMail API.");

            // Send message
            Transport.send(message);
            System.out.println("Email sent successfully!");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

البحث والفلترة في البريد الإلكتروني عبر جافا

توفر مكتبة JavaMail المفتوحة المصدر دعمًا كاملاً للبحث عن رسائل البريد داخل مجلد وفقًا لمعايير مختلفة (المرسل، العنوان، التاريخ، العلامات) داخل تطبيقات جافا. هذا مفيد بشكل خاص عند تطوير عملاء بريد أو أتمتة. يمكنك أيضًا دمج عدة شروط بحث (AND، OR، NOT) عبر AndTerm و OrTerm و NotTerm. يوضح المثال التالي كيفية البحث عن رسائل من مرسل محدد باستخدام أوامر جافا.

كيفية البحث عن رسائل من مرسل محدد داخل تطبيقات جافا؟


Store store = session.getStore("imap");
store.connect("imap.example.com", username, password);

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);

// Search for messages from a specific sender
SearchTerm senderTerm = new FromStringTerm("alerts@example.com");
Message[] found = inbox.search(senderTerm);

for (Message m : found) {
    System.out.println("Subject: " + m.getSubject());
}

inbox.close(false);
store.close();

دعم بروتوكولات SMTP و IMAP و POP3

تدعم مكتبة JavaMail المفتوحة المصدر افتراضيًا ثلاثة من أكثر بروتوكولات البريد شيوعًا، مثل SMTP (Simple Mail Transfer Protocol) لإرسال الرسائل، POP3 (Post Office Protocol 3) لاسترجاع البريد البسيط، و IMAP (Internet Message Access Protocol) للوصول المتقدم إلى البريد (المجلدات، جلب جزئي). بالإضافة إلى ذلك، تدعم المتغيرات الآمنة مثل SMTPS و POP3S و IMAPS، ويمكن توسيعها لتشمل مزودين مخصصين.

المصادقة المتقدمة والأمان عبر جافا

تدعم مكتبة JavaMail المفتوحة المصدر التواصل الآمن مع خوادم البريد، وهو أمر حاسم في بيئة اليوم التي تركز على الأمان. تدعم المكتبة TLS (Transport Layer Security) الذي يشفر قناة الاتصال بين تطبيقك وخادم البريد. كما تدعم SSL (Secure Sockets Layer) وهو السلف لـ TLS، وتُستخدم أيضًا لإنشاء اتصال آمن. تدعم المكتبة أيضًا المصادقة القياسية باستخدام اسم المستخدم/كلمة المرور للاتصال بالخوادم التي تتطلب تسجيل الدخول.

 عربي