有没有办法在Exchange上生成过去发送/接收日期的电子邮件

时间:2015-07-09 11:01:04

标签: email automated-tests exchange-server

我们有一个从Exchange(Online,2013,2010)抓取电子邮件/会议的组件,我们希望在过去的时间段内创建电子邮件分发,例如6个月用于测试目的。

为了实现这一目标,我们肯定需要收到/发送日期的电子邮件,而不是从我们开始生成电子邮件时的当前(从生成时刻)开始。

我们查看了EWS API - 它不支持更改已创建(生成)电子邮件的日期。

还有哪些其他选择?

1 个答案:

答案 0 :(得分:0)

如果更改消息的扩展属性,您可以使用EWS创建一个看起来像过去收到的电子邮件,例如

        EmailMessage OldMessage = new EmailMessage(service);
        OldMessage.ToRecipients.Add("user@domain.com");
        OldMessage.Sender= new EmailAddress("bob@domain.com");
        OldMessage.From = new EmailAddress("bob@domain.com");
        OldMessage.Subject = "This is an old message";
        OldMessage.Body = new MessageBody("test");
        ExtendedPropertyDefinition PR_Flags = new ExtendedPropertyDefinition(3591,MapiPropertyType.Integer);
        OldMessage.SetExtendedProperty(PR_Flags,1);
        ExtendedPropertyDefinition PR_CLIENT_SUBMIT_TIME = new ExtendedPropertyDefinition(0x0039,MapiPropertyType.SystemTime);
        ExtendedPropertyDefinition PR_MESSAGE_DELIVERY_TIME = new ExtendedPropertyDefinition(0x0E06,MapiPropertyType.SystemTime);
        OldMessage.SetExtendedProperty(PR_CLIENT_SUBMIT_TIME,DateTime.Now.AddMonths(-6));
        OldMessage.SetExtendedProperty(PR_MESSAGE_DELIVERY_TIME,DateTime.Now.AddMonths(-6));
        OldMessage.Save(WellKnownFolderName.Inbox);

你也可以使用MimeContent导入一条消息,它会做同样的事情,例如https://msdn.microsoft.com/en-us/library/office/dn672319(v=exchg.150).aspx

干杯 格伦