Dependencias do gradle
implementation("jakarta.mail:jakarta.mail-api:2.1.3")
implementation("org.eclipse.angus:jakarta.mail:2.0.3")
Classe para enviar email
class JakartaMailApi {
fun send(
username: String,
token: String,
senderName: String,
senderEmail: String,
receiverName: String,
receiverEmail: String,
subject: String,
body: String,
isHtml: Boolean = false
): String? {
val props = Properties().apply {
put("mail.smtp.host", DataConstants.SMTP_SERVER)
put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory")
put("mail.smtp.socketFactory.port", "465")
put("mail.smtp.port", "465")
put("mail.smtp.auth", "true")
put("mail.smtp.connectiontimeout", "5000")
put("mail.smtp.timeout", "5000")
put("mail.smtp.writetimeout", "5000")
}
val session = Session.getDefaultInstance(props, object : Authenticator() {
override fun getPasswordAuthentication(): PasswordAuthentication? {
return PasswordAuthentication(username, token)
}
})
// session.debug = true // Habilita o log
// System.setProperty("mail.debug", "true")
// System.setProperty("mail.debug.verbose", "true")
try {
val message = MimeMessage(session)
message.setFrom(InternetAddress(senderEmail, senderName))
message.setRecipient(Message.RecipientType.TO, InternetAddress(receiverEmail, receiverName))
message.subject = subject
if (isHtml) {
message.setContent(body, "text/html; charset=utf-8")
} else {
message.setText(body)
}
message.setHeader("X-Mailer", "eleutzShoplist/1.0")
message.setHeader("Return-Path", senderEmail)
Transport.send(message)
return message.messageID
} catch (e: MessagingException) {
System.err.println("Error sending email: $\{e.message}")
e.printStackTrace()
return null
} catch (e: Exception) {
System.err.println("Error sending email: $\{e.message}")
e.printStackTrace()
return null
}
}
}