c# - 使用EWS托管API将.msg文件上传到Exchange Server

我发现了几个从MS Exchange服务器下载电子邮件并将其保存到文件中的示例。

我需要相反。我需要从“ .msg”文件在服务器的特定文件夹内创建电子邮件。

我发现this documentation有关如何使用带有XML正文的EWS请求来执行此操作。但是,我的所有系统都依赖于EWS Managed API,并且我找不到执行此操作的等效方法。

如何执行我需要的操作?我可以通过Microsoft.Exchange.WebServices.Data.ExchangeService对象传递自定义请求吗?

最佳答案

Microsoft文档链接here


  您可以使用UploadItems EWS操作将项目作为数据流上传。项目的数据流表示形式必须来自ExportItems操作调用的结果。由于EWS托管API未实现UploadItems操作,因此,如果您使用EWS托管API,则需要编写例程以发送Web请求。


您可能可以将.msg文件转换为.eml,并使用以下代码添加消息。

private static void UploadMIMEEmail(ExchangeService service)
{
    EmailMessage email = new EmailMessage(service);

    string emlFileName = @"C:\import\email.eml";
    using (FileStream fs = new FileStream(emlFileName, FileMode.Open, FileAccess.Read))
    {
        byte[] bytes = new byte[fs.Length];
        int numBytesToRead = (int)fs.Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0)
        {
            int n = fs.Read(bytes, numBytesRead, numBytesToRead);
            if (n == 0)
                break;
            numBytesRead += n;
            numBytesToRead -= n;
        }
        // Set the contents of the .eml file to the MimeContent property.
        email.MimeContent = new MimeContent("UTF-8", bytes);
    }

    // Indicate that this email is not a draft. Otherwise, the email will appear as a 
    // draft to clients.
    ExtendedPropertyDefinition PR_MESSAGE_FLAGS_msgflag_read = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer);
    email.SetExtendedProperty(PR_MESSAGE_FLAGS_msgflag_read, 1);
    // This results in a CreateItem call to EWS. The email will be saved in the Inbox folder.
    email.Save(WellKnownFolderName.Inbox);
}

本文翻译自 https://stackoverflow.com/questions/52210229/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# vb.net exchange-server exchangewebservices msg


相关文章:

c# - 内存中的SQLite和数据库消失

c# - C#对象比较

c# - 创建Guid->从VB到C#的转换

c# - C#MS Exchange将电子邮件移至文件夹

python - 通过message_id使用exchangelib获取电子邮件

c# - C#/ Outlook-检索特定的全局联系人

c# - 来自2个StringCollections的C#Repeater.DataSource

c# - 将MvcHtmlString与jQuery模板一起使用-正确的剃刀语法是什么?

c# - VB的开发规模是否与C#相同? [关闭]

c# - Asp.net中的析构函数