【问题标题】:Why attachments are missing using Spring Mail? (Kotlin)为什么使用 Spring Mail 缺少附件? (科特林)
【发布时间】:2020-04-17 22:07:36
【问题描述】:

我想使用 Spring Boot 及其邮件库发送电子邮件。以下是我的实现方式: byteArray 不为 null 也不为空。

class Attachment(val fileName: String, val byteArray: ByteArray)
private val emailSender: JavaMailSender

[...]

private fun sendMessage(to: String, subject: String, text: String, attachments: List<Attachment>? = null) {
        val message = emailSender.createMimeMessage()
        val helper = MimeMessageHelper(message, true)
        message.setContent(text, "text/html; charset=utf-8")

        helper.setFrom(sender)
        helper.setTo(to)
        helper.setSubject(subject)

        // add attachment
        attachments?.forEach { attachment ->
            helper.addAttachment(attachment.fileName, ByteArrayResource(attachment.byteArray))
        }

        try {
            emailSender.send(message)
        } catch (e: MailException) {
            logger.warn("Email could not be sent: $to, reason: ${e.message}")
        }
}

【问题讨论】:

    标签: java spring spring-boot email kotlin


    【解决方案1】:

    如果你使用 Spring 的 mail helper 类,那么你还需要在那里指定 html 内容。

    private fun sendMessage(to: String, subject: String, text: String, attachments: List<Attachment>? = null) {
            val message = emailSender.createMimeMessage()
            val helper = MimeMessageHelper(message, true)
    
            helper.setFrom(sender)
            helper.setTo(to)
            helper.setSubject(subject)
            helper.setText(text, true)
    
            // add attachment
            attachments?.forEach { attachment ->
                helper.addAttachment(attachment.fileName, ByteArrayResource(attachment.byteArray))
            }
    
            try {
                emailSender.send(message)
            } catch (e: MailException) {
                logger.warn("Email could not be sent: $to, reason: ${e.message}")
            }
    }
    

    【讨论】:

    • 那么,您同时提出了一个问题并自己回答了?
    • StackOverflow 有这个 Q&A 功能,我花了好几个小时才找到这个 bug - 所以为什么不与其他人分享它
    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 2023-02-23
    • 2021-07-21
    • 2021-07-10
    • 2021-11-03
    • 2020-06-20
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多