إرسال البريد الإلكتروني في Java: مكتبة Jakarta Mail (JavaMail)

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

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

ابدأ الدورة

إرسال البريد الإلكتروني في Java: مكتبة Jakarta Mail (JavaMail)



في Java، يتم تنفيذ إرسال البريد الإلكتروني تقليديًا من خلال واجهة برمجة تطبيقات قوية ومرنة — JavaMail. بعد انتقال Java EE إلى Eclipse Foundation، حصلت المكتبة على اسم جديد — Jakarta Mail (لـ Jakarta EE 9+) والحزمة الحالية jakarta.mail. في هذا الدليل، سننظر في كيفية إعداد واستخدام Jakarta Mail (أو JavaMail الكلاسيكي) لإرسال الرسائل عبر خادم SMTP.



ما هي Jakarta Mail (JavaMail)؟

Jakarta Mail هي إطار عمل مستقل عن المنصة لإنشاء عملاء البريد الإلكتروني. توفر مجموعة من التجريدات للعمل مع بروتوكولات SMTP وPOP3 وIMAP. لإرسال البريد الإلكتروني، نحن مهتمون ببروتوكول SMTP. تدعم المكتبة:

  • إرسال رسائل نصية بسيطة (text/plain).
  • إرسال رسائل HTML مع المرفقات (multipart/mixed).
  • العمل مع تشفير SSL/TLS (SMTPS).
  • المصادقة على خادم البريد.


التثبيت والتوصيل

للعمل مع Jakarta Mail، ستحتاج إلى إضافة التبعية إلى مشروعك. إذا كنت تستخدم Maven، أضف إلى pom.xml:

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

لـ JavaMail الكلاسيكي (حزمة javax.mail) استخدم:

<dependency>    <groupId>javax.mail</groupId>    <artifactId>javax.mail-api</artifactId>    <version>1.6.2</version></dependency>

ستحتاج أيضًا إلى التنفيذ (عادةً com.sun.mail:javax.mail:1.6.2).



إرسال رسالة نصية أساسية

لنلقِ نظرة على مثال بسيط لإرسال بريد إلكتروني عبر خادم SMTP لـ Gmail (أو أي خادم آخر). أولاً، قم بإنشاء كائن Properties يحتوي على إعدادات SMTP:

import java.util.Properties;import jakarta.mail.*;import jakarta.mail.internet.InternetAddress;import jakarta.mail.internet.MimeMessage;

public class EmailSender { public static void main(String[] args) { // إعدادات خادم SMTP (مثال: Gmail) 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"); // TLS

// المصادقة String username = "your-email@gmail.com"; String password = "your-app-password"; // استخدم كلمة مرور التطبيق!

// إنشاء الجلسة Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

try { // تكوين الرسالة Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("مرحباً من Java!"); message.setText("هذه رسالة اختبارية تم إرسالها باستخدام Jakarta Mail.");

// الإرسال Transport.send(message); System.out.println("تم إرسال البريد الإلكتروني بنجاح!"); } catch (MessagingException e) { e.printStackTrace(); } }}

هام: بالنسبة لـ Gmail، استخدم كلمة مرور التطبيق، وليس كلمة المرور الرئيسية. بالنسبة للخوادم الأخرى (Yandex، Mail.ru)، قد تختلف إعدادات المنفذ والمضيف.

توصيات