我正在尝试使用C#将ICS(日历)文件发送给使用Office365读取它的人。
只发送ICS工作正常。但我必须附上一个文件。
此时,收到的邮件没有日历,或者日历附加到电子邮件中,无法使用,或者附件丢失。
我尝试了两种不同的方式:
1.使用ATTACH在VEVENT内发送附件; ENCODING = BASE64; VALUE = BINARY; X-FILENAME = file.txt:,但这并未显示Office365中的任何附件(如此处:Attaching a file to an iCalendar)
2.将附件作为单独的文件发送,并使用ATTACH:CID:将其附加到VEVENT,但这次日历文件显示为附件
如果我可以格式化邮件消息,第二种方式应该工作:
multipart/mixed multipart/alternative text/plain text/calendar;method=REQUEST text/calendar (with a content-disposition:attachment)
(如Multipart email with text and calendar: Outlook doesn't recognize ics中所述)
如果我使用Outlook365发送日历邀请,则消息看起来就是这样。(但不附带日历作为附件,附加图像或文档)
但是使用System.Net.Mail.MailMessage,我可以生成这样的消息
multipart/mixed multipart/alternative text/plain text/calendar;method=REQUEST multipart/mixed text/plain (with a content-disposition:attachment)
Outlook 2007桌面版显示日历和附件,因此Outlook365对格式的要求非常严格。
但是,如何使用.NET类发送没有额外multipart / mixed部分的电子邮件? MailMessage类为Attachments集合生成一个新的部分,其内容类型为multipart / mixed,并将它们添加到顶层。