Outlook发送带有附加附件(非.ics)的iCalendar会议邀请时出现问题

本文关键字:会议 iCalendar 问题 ics Outlook | 更新日期: 2023-09-27 18:03:10

我需要发送会议邀请,有时可能包含pdf附件。所以我正在构建System.Net.Mail.MailMessage与备选视图(iCalendar内容),与身体和附件,如果它存在。我需要最流行的邮件客户端(支持日历)能够处理我的邀请电子邮件。

下面是我的代码,这是很好的工作:

gmail (web/移动应用程序)带/不带PDF附件
雅虎邮箱(网页/移动应用),带/不带PDF附件
Outlook(桌面)不带PDF附件

    public virtual MailMessage CreateMailMessage(string content, Meeting meeting)
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = _mailsAddressesProvider.GetFromEmaiMailAddress(meeting);
        mailMessage.To.AddRange(_mailsAddressesProvider.GetToEmaiMailAddresses(meeting));
        mailMessage.CC.AddRange(_mailsAddressesProvider.GetCCEmailAddresses(meeting));
        mailMessage.Bcc.AddRange(_mailsAddressesProvider.GetBCCEmailAddresses(meeting));
        mailMessage.Subject = GetMessageSubject(meeting);
        mailMessage.Body = GetMessageBody(meeting);
        mailMessage.IsBodyHtml = IsBodyHtml();
        ContentType contentType = new ContentType("text/calendar");
        contentType.Parameters.Add("method", Method);
        contentType.Parameters.Add("name", AttachmentName);
        AlternateView avCal = AlternateView.CreateAlternateViewFromString(content, contentType);
        mailMessage.AlternateViews.Add(avCal);
        AddAttachments(mailMessage, meeting);
        return mailMessage;
    }
    public virtual bool AddAttachments(MailMessage mailMessage, Meeting meeting)
    {
        byte[] meetingMaterialsBytes = _meetingMaterialsRepository.GetMeetingMaterails(meeting);
        if (meetingMaterialsBytes == null || meetingMaterialsBytes.Length == 0)
        {
            return false;
        }
        ContentType contentType = new ContentType(MediaTypeNames.Application.Pdf);
        Attachment attach = new Attachment(new MemoryStream(meetingMaterialsBytes), contentType);
        attach.ContentDisposition.FileName = "MeetingMaterials.pdf";
        attach.ContentDisposition.Inline = true;
        attach.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
        attach.ContentId = "MeetingMaterials";
        mailMessage.Attachments.Add(attach);
        return true;
    }

所以问题是当带附件的电子邮件在Outlook中打开时。

以下是如何在Outlook 中打开没有 pdf附件的电子邮件- OK:

以下是如何在Outlook 中打开带有 pdf附件的电子邮件- OK:可能iCalendar (ics)内容没有问题,但是System.Net.Mail.MailMessage对象有问题。

所以问题是我需要Outlook打开带有附件的电子邮件作为会议邀请,而不是作为普通电子邮件。

关于我的MailMessage部分有什么问题的建议吗?

Outlook发送带有附加附件(非.ics)的iCalendar会议邀请时出现问题

有很多类似的问题。您需要确保您的消息的MIME结构是正确的。

参见Outlook 2013邀请不显示嵌入附件-文本/日历;method=REQUEST