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部分有什么问题的建议吗?
有很多类似的问题。您需要确保您的消息的MIME结构是正确的。
参见Outlook 2013邀请不显示嵌入附件-文本/日历;method=REQUEST