Envio de email em Kotlin: bibliotecas e exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Envio de email em Kotlin: visão geral das bibliotecas e exemplos práticos



Kotlin é uma linguagem de programação moderna, amplamente utilizada para criar aplicações server-side, backend e microsserviços. A capacidade de enviar emails programaticamente é uma das funções-chave para muitos projetos: notificações, confirmações de registro, newsletters. Neste artigo, vamos abordar como organizar o envio de email em Kotlin, quais bibliotecas usar e como configurar a conexão SMTP.



Principais formas de enviar email em Kotlin



Como o Kotlin roda na JVM, você pode usar qualquer biblioteca Java. A forma mais popular e testada é JavaMail (Jakarta Mail). Uma alternativa é o Ktor Client (parte do framework Ktor), que pode trabalhar diretamente com SMTP. Vamos analisar ambas as abordagens.



1. Envio de email com Jakarta Mail (JavaMail)



Jakarta Mail (anteriormente JavaMail) é a biblioteca padrão para trabalhar com email no ecossistema Java. Para Kotlin, ela é ideal, pois é totalmente compatível com a JVM. Você precisará adicionar a dependência no build.gradle.kts:



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


Após adicionar a biblioteca, você pode escrever uma função simples de envio:



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

fun sendEmail( host: String, port: Int, username: String, password: String, from: String, to: String, subject: String, body: String) { val props = Properties().apply { put("mail.smtp.host", host) put("mail.smtp.port", port.toString()) put("mail.smtp.auth", "true") put("mail.smtp.starttls.enable", "true") }

val session = Session.getInstance(props, object : Authenticator() { override fun getPasswordAuthentication(): PasswordAuthentication { return PasswordAuthentication(username, password) } })

try { val message = MimeMessage(session).apply { setFrom(InternetAddress(from)) setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)) setSubject(subject) setText(body) } Transport.send(message) println("Email enviado com sucesso para $to") } catch (e: MessagingException) { println("Erro ao enviar: ${e.message}") }}


Chamada da função:



fun main() {    sendEmail(        host = "smtp.gmail.com",        port = 587,        username = "youremail@gmail.com",        password = "your-app-password",        from = "youremail@gmail.com",        to = "recipient@example.com",        subject = "Olá do Kotlin!",        body = "Este é um email de teste enviado via Kotlin e Jakarta Mail."    )}


2. Envio de email com anexos (Jakarta Mail)



Para enviar um email com arquivo, você precisa usar MimeBodyPart e MimeMultipart:



import jakarta.mail.internet.MimeBodyPartimport jakarta.mail.internet.MimeMultipartimport java.io.File

fun sendEmailWithAttachment( session: Session, from: String, to: String, subject: String, body: String, attachmentPath: String) { val message = MimeMessage(session).apply { setFrom(InternetAddress(from)) setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)) setSubject(subject) }

// Parte de texto val textPart = MimeBodyPart().apply { setText(body) }

// Anexo val attachmentPart = MimeBodyPart().apply { attachFile(File(attachmentPath)) }

// Montando o multipart val multipart = MimeMultipart().apply { addBodyPart(textPart)

Recommendations