简单电子邮件强制 SMTP 到端口 465



我一直在尝试使用SimpleEmail以编程方式从服务器发送电子邮件。我使用 Kotlin。到目前为止,它总是导致一个错误,尽管将其设置为其他端口,但似乎只使用端口 465。我一直试图找出它为什么这样做,但我还没有看到任何一点。

SimpleEmail().apply {
hostName = "smtp.gmail.com"
setSmtpPort(587)
setAuthenticator(DefaultAuthenticator("**email**", "**password**"))
setSSLOnConnect(true)
setFrom("**email**")
subject = "TEST"
setMsg("TEST")
addTo(email)
}.send()

错误:

org.apache.commons.mail.EmailException:将电子邮件发送到以下服务器失败:smtp.gmail.com:465

有点晚了,但也许它仍然对某人有帮助。

端口 25 和 587 使用 TLS,而端口 465 使用 SSL。如果设置SSLOnConnect,则会强制使用端口465,因为这是SSL端口。

相反,您必须使用 setStartTLSEnabled 和可选的 setStartTLSRequired 为 true,但不能使用 setSSLOnConnect。

主机名应该="smtp.googlemail.com"而不是"smtp.gmail.com",如果它不起作用,请检查Gmail设置以访问SMPT。

const val myEmail = "test@gmail.com"
const val myPassword = "test"
const val receivingAddress = "test"
fun main(args: Array<String>) {
SimpleEmail().apply {
hostName = "smtp.googlemail.com"
isSSLOnConnect = true
subject = ("subject")
setSmtpPort(465)
setAuthenticator(DefaultAuthenticator(myEmail, myPassword))
setFrom(myEmail)
setMsg("message")
addTo(receivingAddress)
}.send() // will throw email-exception if something is wrong
}

最新更新