JavaMail (Jakarta Mail) في Java: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

JavaMail (Jakarta Mail) في Java: دليل شامل مع أمثلة

JavaMail (المعروفة الآن باسم Jakarta Mail) هي مكتبة Java قياسية لإرسال واستقبال ومعالجة البريد الإلكتروني. توفر واجهة برمجة تطبيقات (API) قوية ومرنة للعمل مع بروتوكولات SMTP وPOP3 وIMAP، مما يسمح للمطورين بدمج وظائف البريد في تطبيقاتهم. المكتبة جزء من منصة Jakarta EE (سابقاً Java EE) وتدعمها بنشاط مؤسسة Eclipse Foundation.

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

تشمل الإمكانيات الرئيسية: إرسال الرسائل عبر خادم SMTP (Gmail، Yandex، خادم خاص)، قراءة البريد عبر POP3/IMAP، العمل مع المرفقات (صور، PDF، ملفات مضغوطة)، دعم الرسائل متعددة الأجزاء (multipart)، إدارة العلامات (مقروء، محذوف)، والإعداد الكامل للاتصال عبر Properties.

التثبيت

يتم توزيع JavaMail (Jakarta Mail) عبر Maven Central. للاستخدام، أضف التبعية إلى ملف pom.xml (Maven) أو build.gradle (Gradle).

Maven

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

لـ Jakarta Mail (الإصدار الجديد، بدءاً من Jakarta EE 9):

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>jakarta.mail</artifactId>
    <version>2.0.1</version>
</dependency>

Gradle

implementation 'com.sun.mail:javax.mail:1.6.2'
// أو لـ Jakarta Mail:
implementation 'com.sun.mail:jakarta.mail:2.0.1'

إذا كنت تستخدم Java 9+ والنظام المعياري، أضف إلى module-info.java:

requires java.mail;

بداية سريعة — مثال عملي بسيط

إرسال رسالة نصية بسيطة عبر خادم SMTP لـ Gmail (يتطلب تفعيل "الوصول إلى التطبيقات الأقل أماناً" أو استخدام كلمة مرور التطبيق).

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

public class QuickStart {
    public static void main(String[] args) {
        // إعدادات SMTP
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");

        // المصادقة
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("your-email@gmail.com", "your-password");
            }
        });

        try {
            // إنشاء الرسالة
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("your-email@gmail.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));
            message.setSubject("رسالة اختبار من Java");
            message.setText("مرحباً! هذه رسالة اختبارية.");

            // الإرسال
            Transport.send(message);
            System.out.println("تم إرسال الرسالة بنجاح!");

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

الطرق/الدوال/الفئات الرئيسية

1. Session.getInstance(Properties, Authenti

توصيات