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

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

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

ابدأ الدورة

إرسال البريد الإلكتروني في Kotlin: دليل كامل للمكتبات والأدوات



يُعد إرسال البريد الإلكتروني إحدى المهام الأساسية في تطبيقات الويب الحديثة: بدءًا من تأكيد التسجيل وصولاً إلى الإشعارات والحملات التسويقية. توفر لغة Kotlin، باعتبارها لغة حديثة تعمل على JVM، عدة طرق للتعامل مع البريد الإلكتروني. في هذه المقالة، سنستعرض ثلاثة خيارات رئيسية: JavaMail الكلاسيكي، وKtor Client غير المتزامن، وخدمة السحابة SendGrid. ستتعلم كيفية إرسال رسائل نصية بسيطة ورسائل HTML، وإرفاق الملفات، ومعالجة الأخطاء.



1. JavaMail — المعيار الموثوق



JavaMail هي مكتبة قياسية للتعامل مع البريد الإلكتروني في نظام Java/Kotlin البيئي. وهي تدعم بروتوكولات SMTP و POP3 و IMAP، بالإضافة إلى تشفير SSL/TLS. بالنسبة لمشروع Kotlin، يكفي إضافة التبعية في ملف build.gradle.kts:



dependencies {    implementation("com.sun.mail:jakarta.mail:2.0.1")}


مثال على إرسال رسالة نصية بسيطة عبر SMTP مع المصادقة:



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

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

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

try { val message = MimeMessage(session).apply { setFrom(InternetAddress("your-email@gmail.com")) setRecipient(Message.RecipientType.TO, InternetAddress("recipient@example.com")) subject = "مرحباً من Kotlin!" setText("هذه رسالة اختبارية تم إرسالها باستخدام JavaMail.") } Transport.send(message) println("تم إرسال البريد الإلكتروني بنجاح!") } catch (e: MessagingException) { println("خطأ في الإرسال: ${e.message}") }}


هام: بالنسبة لـ Gmail، يجب استخدام كلمة مرور التطبيق (App Password) بدلاً من كلمة المرور الرئيسية. يمكنك أيضاً إعداد SMTP لـ Yandex أو Mail.ru أو الخادم الخاص بك.



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



إذا كنت تستخدم إطار العمل Ktor لإنشاء تطبيقات الويب، فيمكنك إرسال البريد الإلكتروني عبر طلبات HTTP لواجهات برمجة تطبيقات البريد (مثل Mailgun و SendGrid و Postmark). هذا مناسب للخدمات غير المتزامنة وهندسة الخدمات المصغرة.



أضف التبعية:



dependencies {    implementation("io.ktor:ktor-client-core:2.3.7")    implementation("io.ktor:ktor-client-cio:2.3.7")    implementation("io.ktor:ktor-client-content-negotiation:2.3.7")    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")}


مثال على إرسال بريد إلكتروني عبر واجهة SendGrid API:



import io.ktor.client.*import io.ktor.client.call.*import io.ktor.client.plugins.contentnegotiation.*import io.ktor.client.request.*import io.ktor.http.*import io.ktor.serialization.kotlinx.json.*import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json

@Serializabledata class EmailRequest( val personalizations: List<Personalization>, val from: EmailAddress, val subject: String, val content: List<Content>)

@Serializabledata class Personalization(val to: List<EmailAddress>)

@Serializabledata class EmailAddress(val email: String)

@Serializabledata class Content(val type: String, val value: String)

suspend fun sendEmailViaSendGrid() { val client = HttpClient(CIO) { install(ContentNegotiation) {

توصيات