【问题标题】:How do I save outlook Mailitem as sent mail如何将 Outlook Mailitem 保存为已发送邮件
【发布时间】:2020-06-08 22:29:26
【问题描述】:

我创建了一个 Outlook 邮件项目,并希望将其作为已发送邮件保存在文件夹中。我可以使用mail.SentOnBehalfofName 设置发件人邮件。如何向此添加日期字段。我有一些 eml 电子邮件,我想在没有付费库的情况下将它们添加到文件夹中。我能够解析并将其保存到 Outlook 文件夹,但日期字段设置为无。有人可以帮助将日期字段设置为 Outlook mailitem 对象或创建可以使用所有属性保存在 Outlook 中的邮件项目的方法吗?

【问题讨论】:

  • 你确实需要展示设置属性的代码
  • Outlook.MailItem tempMail = application.CreateItem(Outlook.OlItemType.olMailItem); mail.To = "abc@mno.com"; mail.Subject = "hello World"; mail.Body = "bla bla"; mail.SentOnBehalfOfName "xyz@mno.com";

标签: c# outlook vsto mailitem


【解决方案1】:

首先,项目的发送状态只能在第一次保存之前更改(MAPI 限制)。其次,Outlook 总是在未发送状态下创建olMailItem 对象。在已发送状态下创建的唯一项目是PostItem (olPostItem)。您可以创建一个 PostItem,将其 MessageClass 属性更改为“IPM.Note”,保存它,然后使用Marshal.ReleaseComObject 释放它(以确保 Outlook 忘记它),然后通过 calingNamespace.GetItemFromID 重新打开它 - 这次 Outlook 应该返回一个MailItem 对象(而不是原来的PostItem)。

请记住,图标会出错,因此需要删除帖子图标 - 使用 MailItem.PropertyAccessor.DeleteProperty 删除 PR_ICON_INDEX 属性(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x10800003)。

还请记住,Outlook 不会让您设置一些它认为“重要”的属性 - 例如邮件日期、发件人条目 ID 等。仅设置 SentOnBehalfOfName 属性是不够的 - 发件人必须设置条目 ID,否则用户将无法正确回复该消息。

如果使用Redemption 是一个选项,那么在已发送状态下创建消息就像

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set Inbox = Session.GetDefaultFolder(olFolderInbox)
  set Msg = Inbox.Items.Add
  Msg.Sent = true
  set CU = Session.CurrentUser
  set recip = Msg.Recipients.AddEx(CU.Name, CU.SmtpAddress, "SMTP", olTo)
  Msg.Subject = "fake received message"
  Msg.Body = "just a test"
  vSenderEntryId = Session.AddressBook.CreateOneOffEntryID("Joe The Sender", "SMTP", "joe@domain.demo", false, true)
  set vSender = Session.AddressBook.GetAddressEntryFromID(vSenderEntryId)
  Msg.Sender = vSender
  Msg.SentOnBehalfOf = vSender
  Msg.SentOn = Now
  Msg.ReceivedTime = Now
  Msg.Save

【讨论】:

  • 首先我要感谢@DmitryStreblechenko,在过去的几个月里,我一直在开发一个 Outlook 插件,我遇到的每一个障碍,在堆栈溢出上搜索了几个小时,Dmitry 几乎得到了答案总而言之,我很想使用 Redemption 它可以在一个实例中解决我的所有问题,但是我的组织有一个繁琐的过程来使用新的 3rd 方库...... :( 我已经放弃尝试让它看起来像一个发送的项目现在,我正在尝试编写一个味精解析器来设置这些属性,同时从数据创建味精。
猜你喜欢
  • 2010-12-24
  • 1970-01-01
  • 2017-04-12
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多