在Kotlin中发送带有文件附件的自定义电子邮件可以通过使用JavaMail库来实现。下面是一个示例代码,展示了如何在Kotlin中发送带有文件附件的电子邮件:
import java.util.*
import javax.mail.*
import javax.mail.internet.*
fun sendEmailWithAttachment(to: String, subject: String, body: String, attachmentPath: String) {
val properties = Properties()
properties["mail.smtp.host"] = "smtp.example.com" // 设置SMTP服务器地址
properties["mail.smtp.port"] = "587" // 设置SMTP服务器端口号
properties["mail.smtp.auth"] = "true" // 启用SMTP身份验证
properties["mail.smtp.starttls.enable"] = "true" // 启用TLS加密
val session = Session.getInstance(properties, object : Authenticator() {
override fun getPasswordAuthentication(): PasswordAuthentication {
return PasswordAuthentication("your-email@example.com", "your-password") // 设置发件人邮箱和密码
}
})
try {
val message = MimeMessage(session)
message.setFrom(InternetAddress("your-email@example.com")) // 设置发件人邮箱
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)) // 设置收件人邮箱
message.subject = subject // 设置邮件主题
val multipart = MimeMultipart()
// 添加邮件正文
val bodyPart = MimeBodyPart()
bodyPart.setText(body)
multipart.addBodyPart(bodyPart)
// 添加文件附件
val attachmentPart = MimeBodyPart()
val dataSource = FileDataSource(attachmentPath)
attachmentPart.dataHandler = DataHandler(dataSource)
attachmentPart.fileName = dataSource.name
multipart.addBodyPart(attachmentPart)
message.setContent(multipart)
Transport.send(message)
println("邮件发送成功")
} catch (e: MessagingException) {
println("邮件发送失败: ${e.message}")
}
}
fun main() {
val to = "recipient@example.com" // 收件人邮箱
val subject = "测试邮件" // 邮件主题
val body = "这是一封测试邮件" // 邮件正文
val attachmentPath = "path/to/attachment.pdf" // 附件文件路径
sendEmailWithAttachment(to, subject, body, attachmentPath)
}
在上述代码中,你需要替换以下内容:
smtp.example.com
:SMTP服务器地址587
:SMTP服务器端口号your-email@example.com
:发件人邮箱your-password
:发件人邮箱密码recipient@example.com
:收件人邮箱测试邮件
:邮件主题这是一封测试邮件
:邮件正文path/to/attachment.pdf
:附件文件路径请确保你已经添加了JavaMail库的依赖。你可以在build.gradle
文件中添加以下依赖:
dependencies {
implementation 'com.sun.mail:javax.mail:1.6.2'
implementation 'com.sun.mail:javax.mail-api:1.6.2'
}
这是一个基本的示例,你可以根据自己的需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云