在Outlook 2013中使用Hotmail EAS提供程序的Hotmail文件夹之间的MailItem.Move失败了吗?

时间:2015-03-18 10:36:55

标签: ms-office outlook-addin outlook-2013

使用Microsoft Outlook 2013对象模型(MailItem.Move)将邮件以编程方式从Hotmail收件箱移动到相同 Hotmail / Outlook.com中的文件夹时store,此方法失败并显示错误消息:

Sorry, ActiveSync doesn't support what you're trying to do

但是,手动将同一条消息拖到同一个文件夹中工作正常!

我知道 - 通过设计 - Outlook的EAS提供程序无法将邮件项目从外部(如.PST商店)移动到Hotmail文件夹中,因为这违反了" no import"限制Hotmail。

但是这里的这种特殊行为不能用这种方式解释,因为在那种情况下它不应该能够支持手动拖动和放大器。放下案例!将任何内容导入Hotmail也没有任何关系,因为该项目仅在单个Hotmail商店中的文件夹之间移动。

所以我想知道:这是设计还是错误? 也许是一种解决方法?

快速复制案例:

(这假定安装了OutlookSpy - 但使用基本的VSTO加载项也很容易模拟

将hotmail / outlook.com帐户添加到Outlook个人资料中

在hotmail / outlook.com收件箱中创建一个子文件夹

在hotmail / outlook.com收件箱中的邮件项目上的位置

单击OutlookSpy功能区选项卡

单击OutlookSpy功能区中的“项目”按钮

单击MailItem对话框中的“脚本”选项卡

输入以下脚本并按Run:

set inbox = MailItem.Parent    
set childfolder = inbox.Folders.item(1)
MailItem.Move childFolder

注意:这是在MS Outlook 2013,v15.0.4693.1001(32位)中观察到的

1 个答案:

答案 0 :(得分:0)

如果不支持移动,则Outlook不会移动邮件 - 它会在目标文件夹中创建邮件,复制所有属性,然后删除原始邮件。尝试以下内容:

set inbox = MailItem.Parent    
set childfolder = inbox.Folders.item(1)
set NewMessage = MailItem.Copy
NewMessage.Move childFolder
'MailItem.Delete

或者您可以尝试使用Redemption及其RDOMail。CopyTo方法(它可以使用另一个RDOMail对象或RDOFolder对象作为参数):

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set OldMsg = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
  set childfolder = Session.GetDefaultFolder(olFolderInbox).Folders.item(1)
  debug.print childfolder.name
  set newMsg = childfolder.Items.Add
  newMsg.Sent = OldMsg.Sent 'it is not copied
  OldMsg.CopyTo(newMsg)
  newMsg.Save
  OldMsg.Delete