[英]Java, ICS calendar format not showing time when imported in Outlook or Thunderbird
[英]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.