我需要发送有时可能包含.pdf附件的会议邀请。 所以我正在使用Alternative视图(对于iCalendar内容)构建System.Net.Mail.MailMessage,使用Body和附件(如果存在)。我需要最受欢迎的邮件客户端(支持日历)才能处理我的邀请电子邮件。
这是我的代码,非常适用于:
带/不带pdf附件的gmail(网络/移动应用程序) 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附件 - 确定:
以下是在Outlook 中使用 pdf附件打开此类电子邮件的方式 - 确定: 可能iCalendar(ics)内容没有问题,但使用System.Net.Mail.MailMessage对象。
所以问题是我需要Outlook打开一封附件作为会议邀请而不是普通电子邮件的电子邮件。
关于我的MailMessage部件可能出现什么问题的任何建议? 提前谢谢。
答案 0 :(得分:0)
有很多类似的问题。您需要确保邮件的MIME结构正确。
参见例如Outlook 2013 invite not showing embeded attachment - text/calendar;method=REQUEST