You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Kotlin发送简单文本邮件:无Java代码及commons email导入解决

Kotlin纯文本邮件发送的可落地方案

完全可以绕开之前commons-email依赖导入失败的问题,实现纯Kotlin逻辑的纯文本邮件发送,不需要混写Java代码。

方案1:基于官方原生邮件API的轻依赖实现

commons-email本质是对Java原生邮件能力的二次封装,导入失败大多是它本身依赖链路长、仓库拉取异常导致的,直接跳过封装层,只引入官方维护的核心邮件依赖即可:

  • 只需要在构建配置里加一行核心依赖即可,没有多余传递依赖,极少出现导入失败问题:implementation("com.sun.mail:jakarta.mail:2.0.1")
  • 直接用纯Kotlin编写发送逻辑,不需要额外引入commons-email相关包,纯文本内容只需要调用基础方法设置即可,核心实现代码:
import jakarta.mail.Authenticator
import jakarta.mail.Message
import jakarta.mail.PasswordAuthentication
import jakarta.mail.Session
import jakarta.mail.Transport
import jakarta.mail.internet.InternetAddress
import jakarta.mail.internet.MimeMessage
import java.util.Properties

fun sendPlainMail(
    smtpServer: String,
    smtpPort: Int,
    senderEmail: String,
    senderAuthCode: String,
    receiverEmail: String,
    title: String,
    content: String
) {
    val smtpProps = Properties().apply {
        put("mail.smtp.host", smtpServer)
        put("mail.smtp.port", smtpPort.toString())
        put("mail.smtp.auth", "true")
        put("mail.smtp.ssl.enable", "true")
    }
    val mailSession = Session.getInstance(smtpProps, object : Authenticator() {
        override fun getPasswordAuthentication() = PasswordAuthentication(senderEmail, senderAuthCode)
    })
    val mailMsg = MimeMessage(mailSession).apply {
        setFrom(InternetAddress(senderEmail))
        setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiverEmail))
        subject = title
        setText(content)
    }
    Transport.send(mailMsg)
}

方案2:零第三方依赖的SMTP原生交互实现

如果连上面的轻量邮件依赖都不想引入,可以直接用Kotlin标准库自带的Socket能力,按照SMTP协议规则手写交互流程。这个实现完全不需要引入任何第三方类库、不需要混写Java代码,所有逻辑用Kotlin完成,满足无额外Java代码依赖的需求,整个流程覆盖连接建立、身份校验、纯文本投递全链路:

  • 优点是完全规避依赖导入失败的问题,所有逻辑都可控
  • 缺点是需要自行处理SMTP协议的状态码判断、文本编码转义、连接异常重试,代码量比方案1稍大

注意:发信时的身份校验环节,不要使用邮箱的日常登录密码,要使用对应邮箱服务商生成的SMTP专属授权码,否则会触发认证失败。

内容的提问来源于stack exchange,提问作者mxrvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 23:06:02