标记邮件项目已发送(VBA outlook)

时间:2016-07-01 05:51:09

标签: vba email outlook

我有更改邮件发送属性的问题,因为该属性是只读的,我需要从vba级别更改它。

从共享邮箱发送邮件后(使用在线Outlook模式)出现问题。邮件不会转到共享邮箱中的“已发送邮件”文件夹,但会保留在发件箱文件夹中。我已经制作宏来将邮件移动到正确的文件夹,一切都很好,但邮件的状态未发送(当你打开mailitem时,你处于编辑模式)。我找不到任何问题的解决方案。

这是发件箱文件夹,其中包含从共享邮箱发送的正确发送的邮件和邮件:

image screenshot

2 个答案:

答案 0 :(得分:0)

在低(扩展MAPI)级别,只能在第一次保存项目之前更改发送/未发送状态(MSGFLAG_UNSENT属性中的PR_MESSAGE_FLAGS位)。

Outlook对象模型当然受到相同的限制,在发送状态下创建项目的唯一方法是创建一个PostItem对象 - 它是在已发送状态下创建的。然后,您需要将邮件类更改回IPM.Note并删除与图标相关的属性,以确保该项目看起来正确。

Redemption可让您更改项目的状态(RDOMailSent是可读/写的,直到第一次调用保存为止。

回到你的特定问题,你需要弄清楚为什么这些项目留在未发送状态的文件夹中,而不是试图"修复"它

答案 1 :(得分:0)

我用不太整洁的方式解决了这个问题。我将注册表项DelegateSentItemsStyle更改为0,当我这样做时,发送的邮件转到我个人发送的Items文件夹。然后我只是将邮件移动到共享邮箱。