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

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

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

ابدأ الدورة

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



يعد إرسال رسائل البريد الإلكتروني من أكثر المهام شيوعًا في تطبيقات المؤسسات بلغة Java: تسجيل المستخدمين، الإشعارات، استعادة كلمات المرور، والحملات التسويقية. لفترة طويلة، كانت مكتبة JavaMail هي المعيار الفعلي، ولكن بعد انتقال Java EE إلى Eclipse Foundation تمت إعادة تسميتها إلى Jakarta Mail. في هذا الدليل، سنشرح بالتفصيل كيفية إعداد واستخدام Jakarta Mail لإرسال البريد الإلكتروني في Java.



ما هي Jakarta Mail؟

Jakarta Mail (المعروفة سابقًا باسم JavaMail) هي واجهة برمجة تطبيقات (API) لإرسال واستقبال ومعالجة رسائل البريد الإلكتروني في تطبيقات Java. تدعم المكتبة بروتوكولات SMTP و POP3 و IMAP، بالإضافة إلى معيار MIME، مما يسمح بإرسال رسائل نصية بسيطة ورسائل تحتوي على مرفقات وترميز HTML وصور.



تثبيت وإضافة التبعيات

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

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


بالنسبة لـ Gradle:

implementation 'com.sun.mail:jakarta.mail:2.0.1'


هام: إذا كنت تستخدم Java 8 أو إصدارًا أقدم، تأكد من توافق إصدار Jakarta Mail — بالنسبة لـ Java 8، الإصدار 1.6.x مناسب (على سبيل المثال، javax.mail:javax.mail-api:1.6.2).



إرسال البريد الإلكتروني الأساسي في Java

لنلقِ نظرة على أبسط مثال — إرسال رسالة نصية عبر خادم SMTP الخاص بـ Gmail. ستحتاج إلى:

  • حساب Gmail (أو أي خدمة بريد إلكتروني أخرى)
  • كلمة مرور التطبيق (إذا تم تفعيل المصادقة الثنائية)
  • السماح بالوصول إلى التطبيقات الأقل أمانًا (إذا لزم الأمر)


كود الإرسال:

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

public class EmailSender { public static void main(String[] args) { // 1. إعداد خصائص الاتصال 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");

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

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

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


إرسال رسائل HTML ورسائل مع مرفقات

غالبًا ما يكون من الضروري إرسال رسالة بتنسيق (HTML) أو إرفاق ملف. لهذا الغرض، يتم استخدام MimeMultipart و MimeBodyPart.



رسالة HTML

MimeBodyPart htmlPart = new MimeBodyPart();htmlPart.setContent("<h1>مرحبًا!</h1><p>هذه رسالة HTML من Java.</p>", "text/html; charset=utf-8");

Multipart mu

توصيات