通过SMTP发送ICS文件在Outlook中未正确显示?

时间:2018-11-16 15:12:20

标签: java spring-boot outlook javamail icalendar

我正在尝试从后端服务器发送日历邀请。

这里涉及的功能:

fun sendEventInvite(to: String, subject: String, text: String) {
    val message: MimeMessage = emailSender.createMimeMessage()

    message.setRecipient(Message.RecipientType.TO, InternetAddress(to))
    message.subject = subject

    val messageBodyText = MimeBodyPart()
    messageBodyText.setText(text)
    val messageBodyEvent = MimeBodyPart()
    messageBodyEvent.dataHandler = ByteArrayDataSource(createEvent(), "text/calendar")

    val multiPart = MimeMultipart()
    multiPart.addBodyPart(messageBodyEvent)

    message.setContent(multiPart)

    emailSender.send(message)
}

这是我格式化ICS文件的方式:

fun createEvent(): String{
        return "BEGIN:VCALENDAR\n" +
        "VERSION:2.0\n" +
        "PRODID:-//GRTgaz Corporation//NONSGML Togaz'er//FR\n" +
        "METHOD:REQUEST\n" +
        "BEGIN:VEVENT\n" +
        "UID:d8f5a0777-bf6d-25d2-f14a-52e7fe3df810\n" +
        "DTSTAMP:20181119T105044Z\n" +
        "ORGANIZER;CN=Baptiste Arnaud:MAILTO:baptiste.arnaud95@gmail.com\n" +
        "DTSTART:20181120T150000\n" +
        "DTEND:20181120T153000\n" +
        "SUMMARY:Description\n" +
        "END:VEVENT\n" +
        "END:VCALENDAR\n")
    }

该文件的内容应该起作用,因为它与工作示例完全相同。那么问题出在邮件头上吗?但是我不确定缺少什么。

应如何工作:

enter image description here

但是它显示如下:

enter image description here

1 个答案:

答案 0 :(得分:1)

所有对addHeaderLine的调用都不是有效的MIME头,因此我不知道您要用什么完成。

使用MimeHelper只会使事情变得混乱。直接在MimeMessage对象上调用相应的方法,并在ics附件之前将“文本”添加为多部分中的第一个MimeBodyPart。