我正在为outlook编写插件,我想在Sent Box中创建新项目,但我不想发送它,只需将其保存到Sent Box即可。
请帮助我!
答案 0 :(得分:0)
MailItem.Sent
属性是只读的。即使在MAPI级别(C ++或Delphi)上,只有在第一次保存消息之前,才能从MSGFLAG_UNSENT
属性中删除PR_MESSAGE_FLAGS
位。 OOM在已发送状态中创建的唯一项目是一个帖子项,因此理论上,您可以创建一个帖子项,保存它,将其MessageClass
属性重置为"IPM.Note",
取消引用它,重新打开条目ID - 您现在将拥有处于已发送状态的MailItem。您不必设置所有发件人和收件人属性(大约十几个)并删除特定于帖子的属性 - 使用OutlookSpy查看已发送的邮件(单击IMessage按钮)。
如果使用Redemption(任何语言)是一个选项,它可以轻松创建虚假发送消息:
Set MySession = CreateObject("Redemption.RDOSession")
MySession.MAPIOBJECT = Application.Session.MAPIOBJECT
Set Folder = MySession.GetDefaultFolder(olFolderSentMail)
Set msg = Folder.Items.Add("IPM.Note")
msg.Sent = True
msg.Recipients.AddEx "The user", "user@domain.demo", "SMTP", olTo
msg.Sender = MySession.CurrentUser
msg.SentOnBehalfOf = MySession.CurrentUser
msg.subject = "Test sent message"
msg.Body = "test body"
msg.SentOn = Now
msg.ReceivedTime = Now
msg.Save