إرسال البريد الإلكتروني باستخدام Kotlin: المكتبات والأمثلة وإعداد SMTP

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

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

ابدأ الدورة

إرسال البريد الإلكتروني باستخدام Kotlin: نظرة عامة على الأدوات وأمثلة الكود



يعد إرسال رسائل البريد الإلكتروني إحدى المهام النموذجية في تطوير الويب والإشعارات والخدمات الخلفية. في نظام Kotlin البيئي الذي يعمل على JVM، يمكن استخدام كل من مكتبات Java الكلاسيكية والحلول الحديثة الموجهة لـ Kotlin. في هذه المقالة، سنستعرض ثلاثة أساليب رئيسية: javax.mail (Jakarta Mail) و Ktor Client و Apache Commons Email. ستتعلم كيفية إعداد عميل SMTP، وإرسال بريد إلكتروني بسيط، وإضافة مرفقات.



1. javax.mail (Jakarta Mail) — المعيار الكلاسيكي

المكتبة الأكثر شيوعًا للعمل مع البريد الإلكتروني في Java و Kotlin. وهي تدعم بشكل كامل بروتوكولات SMTP و IMAP و POP3. بالنسبة لمشروع Kotlin، يكفي إضافة التبعية في ملف build.gradle.kts:

dependencies {    implementation("com.sun.mail:javax.mail:1.6.2")}


مثال على إرسال بريد إلكتروني نصي بسيط:

import javax.mail.*import javax.mail.internet.InternetAddressimport javax.mail.internet.MimeMessageimport java.util.Properties

fun sendSimpleEmail() { val props = Properties().apply { put("mail.smtp.auth", "true") put("mail.smtp.starttls.enable", "true") put("mail.smtp.host", "smtp.gmail.com") put("mail.smtp.port", "587") }

val session = Session.getInstance(props, object : Authenticator() { override fun getPasswordAuthentication(): PasswordAuthentication { return PasswordAuthentication("your-email@gmail.com", "your-password") } })

val message = MimeMessage(session).apply { setFrom(InternetAddress("from-email@gmail.com")) setRecipients(Message.RecipientType.TO, InternetAddress.parse("to-email@example.com")) subject = "مرحبًا من Kotlin!" setText("هذه رسالة اختبارية تم إرسالها باستخدام javax.mail.") }

Transport.send(message) println("تم إرسال البريد الإلكتروني بنجاح!")}


هام: بالنسبة لـ Gmail، ستحتاج إلى كلمة مرور التطبيق أو OAuth2. لا تقم بتخزين بيانات الاعتماد في الكود - استخدم متغيرات البيئة.



إرسال بريد إلكتروني مع مرفق

import javax.activation.DataHandlerimport javax.activation.FileDataSourceimport javax.mail.internet.MimeBodyPartimport javax.mail.internet.MimeMultipart

fun sendEmailWithAttachment() { // ... إعداد session كما هو موضح أعلاه ... val message = MimeMessage(session).apply { setFrom(InternetAddress("from@gmail.com")) setRecipients(Message.RecipientType.TO, InternetAddress.parse("to@example.com")) subject = "رسالة مع مرفق" }

val multipart = MimeMultipart()

// الجزء النصي val textPart = MimeBodyPart().apply { setText("انظر إلى المرفق.") } multipart.addBodyPart(textPart)

// المرفق val attachmentPart = MimeBodyPart().apply { dataHandler = DataHandler(FileDataSource("/path/to/file.pdf")) fileName = "مستند.pdf" } multipart.addBodyPart(attachmentPart)

message.setContent(multipart) Transport.send(message)}


2. Ktor Client — النهج الحديث غير المتزامن

إذا كان مشروعك يستخدم بالفعل Ktor لطلبات HTTP، فيمكنك إرسال البريد الإلكتروني عبر SMTP باستخدام الإضافة ktor-client-smtp. وهذا يوفر مزايا coroutines والتنفيذ غير المتزامن. التبعية:

dependencies {    implementation("io.ktor:ktor-client-core:2.3.0")    implementation("io.ktor:ktor-client-smtp:2.3.0")}


مثال على الإرسال:

import io.ktor.client.*import io.ktor.client.smtp.*import io.ktor.client.request.*import io.ktor.client.statement.*

suspend fun sendViaKtor() { val client = HttpClient {

توصيات