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: guia completo de bibliotecas e ferramentas



O envio de email é uma das tarefas essenciais em aplicações web modernas: desde confirmação de cadastro até notificações e campanhas de marketing. Kotlin, como uma linguagem moderna para JVM, oferece várias abordagens para trabalhar com email. Neste artigo, abordaremos três opções principais: o clássico JavaMail, o assíncrono Ktor Client e o serviço em nuvem SendGrid. Você aprenderá a enviar emails simples de texto e HTML, anexar arquivos e tratar erros.



1. JavaMail — o padrão consolidado



JavaMail é a biblioteca padrão para trabalhar com email no ecossistema Java/Kotlin. Ela suporta os protocolos SMTP, POP3 e IMAP, além de criptografia SSL/TLS. Para um projeto Kotlin, basta adicionar a dependência no build.gradle.kts:



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


Exemplo de envio de um email simples de texto via SMTP com autenticação:



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 = "Olá do Kotlin!" setText("Este é um email de teste enviado com JavaMail.") } Transport.send(message) println("Email enviado com sucesso!") } catch (e: MessagingException) { println("Erro ao enviar: ${e.message}") }}


Importante: Para o Gmail, é necessário usar uma senha de aplicativo (App Password), e não a senha principal. Você também pode configurar SMTP para Yandex, Mail.ru ou seu próprio servidor.



2. Ktor Client — abordagem assíncrona



Se você utiliza o framework Ktor para criar aplicações web, pode enviar emails por meio de requisições HTTP para APIs de email (por exemplo, Mailgun, SendGrid, Postmark). Isso é conveniente para serviços assíncronos e arquitetura de microsserviços.



Adicione a dependência:



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")}


Exemplo de envio de email via API do SendGrid:



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) {

Recommendations