簡體   English   中英

Java:不能在 Outlook 中讀取 ics

[英]Java: ics not read in outlook

我已經編寫了 java 代碼來發送日歷邀請。 它適用於 gmail,雷鳥。 客戶閱讀 ics 並正確顯示邀請。

但同樣的郵件似乎無法在 Microsoft Outlook 上運行。 Outlook 不會將郵件識別為日歷邀請,因此不會顯示接受、拒絕按鈕。

以下是使用的代碼片段:

MimeMessage message = new MimeMessage(session);
message.addHeaderLine("method=REQUEST");
message.addHeaderLine("charset=UTF-8");
message.addHeaderLine("component=VEVENT"); 

BodyPart textBodyPart = new MimeBodyPart();
textBodyPart.setContent("Invitation for an event.", "text/plain");

BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.addHeader("Content-Class", "urn:content-classes:calendarmessage");
messageBodyPart.addHeader("Content-ID", "calendar_message");
messageBodyPart.setContent(inviteMessage, "text/calendar");

Multipart multipart = new MimeMultipart("alternative");
multipart.addBodyPart(textBodyPart);
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);

如下修改內容類型對我來說是招數。

messageBodyPart.setContent(inviteMessage, "text/calendar;method=REQUEST");

在我的案例中添加以下代碼行是一個難題(在答案https://stackoverflow.com/a/67521336/14972917中找到):

final MimetypesFileTypeMap mimetypes = (MimetypesFileTypeMap) MimetypesFileTypeMap.getDefaultFileTypeMap();
mimetypes.addMimeTypes("text/calendar ics ICS");
final MailcapCommandMap mailcap = (MailcapCommandMap) MailcapCommandMap.getDefaultCommandMap();
mailcap.addMailcap("text/calendar;; x-java-content-handler=com.sun.mail.handlers.text_plain");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM