EWS转发电子邮件作为附件 - 无法在其他电子邮件客户端中打开

时间:2018-02-02 20:24:47

标签: c# exchangewebservices ews-managed-api

在我的程序中,我正在使用EWS .NET API读取Exchange邮箱,并将电子邮件作为附件转发到外部电子邮件地址。我使用的代码在

下面
  private void ForwardMessage(ExchangeService exchangeService, EmailMessage item)
  {
    ResponseMessage responseMessage = item.CreateForward();
    item.Load(new PropertySet(BasePropertySet.FirstClassProperties, new 
                     PropertySet(){ItemSchema.MimeContent,                                                                            
                    ItemSchema.Subject}));
    var mail = new EmailMessage(exchangeService);
    var attachment = mail.Attachments.AddFileAttachment(String.Format("
                        {0}.eml", item.Subject),  
    item.MimeContent.Content);
    String forwardEmailAddresses = 
                      MailProcessorSettings.Default.ForwardEmailAddress;
    char[] delimiters = { ',', ';' };
    foreach (var emailAddress in forwardEmailAddresses.Split(delimiters, 
              StringSplitOptions.RemoveEmptyEntries))
    {
        mail.ToRecipients.Add(emailAddress);
    }
    mail.Subject = item.Subject;
    mail.Send();
  }

我可以在Outlook中打开作为附件转发的电子邮件。但是,如果我将其发送到Gmail或使用其他电子邮件客户端的其他用户,则会显示为空白附件。

如何确保以附件形式转发的电子邮件会保留原始内容?

1 个答案:

答案 0 :(得分:0)

添加指示邮件内容类型的行似乎可以解决此问题。以下任一设置似乎都有效。添加ContentType后,我可以从Gmail下载附件,但我必须使用Outlook客户端才能打开它。

attachment.ContentType = "multipart/alternative"
OR
attachment.ContentType = "message/rfc822"