Kotlin पर ईमेल भेजना: टूल्स का अवलोकन और कोड उदाहरण
ईमेल भेजना वेब डेवलपमेंट, नोटिफिकेशन और बैकग्राउंड सर्विसेज में सामान्य कार्यों में से एक है। JVM पर चलने वाले Kotlin इकोसिस्टम में, आप क्लासिक 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 — आधुनिक एसिंक्रोनस दृष्टिकोण
यदि आपका प्रोजेक्ट पहले से HTTP अनुरोधों के लिए Ktor का उपयोग करता है, तो आप ktor-client-smtp प्लगइन के साथ SMTP के माध्यम से ईमेल भेज सकते हैं। यह कोरूटीन और एसिंक्रोनस निष्पादन के लाभ प्रदान करता है। डिपेंडेंसी:
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 {