0

我有一个PostItem这样的:

Outlook.PostItem pi = this.Application.CreateItem(Outlook.OlItemType.olPostItem);
pi.Save();
var sentBox = this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
pi.Move(sentBox);

该项目按要求保存在sentitems文件夹中,但我无法编辑收件人列表(就像它实际上是发送的邮件一样)。

4

1 回答 1

0

您是否正在尝试创建已发送的消息?创建PostItem项目(在已发送状态下创建)后,将其更改MessageClass"IPM.Note",保存,将其条目 id 存储在变量中,释放对它的所有引用(使用Marshal.ReleaseComObject),然后MailItem使用 重新打开为对象Namespace.GetItemFromID。请注意,图标仍然是错误的,您需要删除 PR_ICON_INDEX 属性 - 但PropertyAccessor.DeleteProperty不允许您为该属性执行此操作。

如果可以选择使用Redemption,则在已发送状态下创建消息就像

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set Inbox = Session.GetDefaultFolder(olFolderSentMail)
  set Msg = Inbox.Items.Add
  Msg.Sent = true
  set CU = Session.CurrentUser
  set recip = Msg.Recipients.AddEx("Joe The Recipient", "joe@domain.demo", "SMTP", olTo)
  Msg.Subject = "fake sent message"
  Msg.Body = "just a test"
  Msg.Sender = CU
  Msg.SentOnBehalfOf = CU
  Msg.SentOn = Now
  Msg.ReceivedTime = Now
  Msg.Save
于 2020-08-16T17:17:51.250 回答