【问题标题】:e-mail properties lost when copied to Outlook Public Folders复制到 Outlook 公用文件夹时,电子邮件属性丢失
【发布时间】:2012-08-15 01:24:36
【问题描述】:

我的 VBA 应用程序将选定的、本地存储的电子邮件移动/复制到我拥有完全访问权限的指定公用文件夹。

问题在于,在移动/复制电子邮件后,To 和 From 属性会变得混乱。那就是:

原文来自:GuyA

原始收件人:我

搬家后来自:我

后移至:公用文件夹的名称

我尝试了以下方法,但似乎对公用文件夹中的电子邮件没有任何影响

For Each email In a1Bucket.items
    sender = email.SentOnBehalfOfName
    receiver = email.ReceivedOnBehalfOfName
    email.Move largeBucket
    email.SentOnBehalfOfName = sender
    email.To = receiver
Next

我错过了什么?

【问题讨论】:

  • 如果在“next”之前添加这一行email.Save会发生什么
  • Hmm... "无法执行操作,因为对象已被删除。"如何保留对该电子邮件对象的引用?
  • 好的,我已经删除了我的帖子。您在尝试代码时遇到了什么错误?
  • "无法执行操作,因为对象已被删除。"在 .save 行
  • 好的,等等。让我用本地文件夹做一个快速测试。

标签: vba outlook


【解决方案1】:

试试这个(在本地文件夹测试)

For Each Email In a1Bucket.items
    sender = Email.SentOnBehalfOfName
    receiver = Email.ReceivedOnBehalfOfName
    Set currentMailItem = Email.Move (largeBucket)
    currentMailItem.SentOnBehalfOfName = sender
    currentMailItem.To = receiver
    currentMailItem.Save
Next

【讨论】:

  • @Krzysiek:现在试试更新的代码。还要在顶部添加Dim currentMailItem as Object。
  • 有点工作! .To 字段已更改,但 SentOnBehalfOfName 未更改。它仍然列出了我的名字...
  • 好消息 :) 让我进行更多实验 :)
  • 嗯,它适用于我在本地文件夹中。你能调试一下,看看sender的值是多少?在保存命令后添加Debug.Print currentMailItem.SentOnBehalfOfName。你得到了什么?
  • 它显示了正确的发件人...但是当我转到公共文件夹并打开电子邮件时,发件人仍然是我。不知道怎么了:(
【解决方案2】:

试试:

Dim newEMail As Outlook.MailItem    
For Each email In a1Bucket.items
    sender = email.SentOnBehalfOfName
    receiver = email.ReceivedOnBehalfOfName
    Set newEMail = objmail.Move(largeBucket)
    'email.Move largeBucket
    newEMail.SentOnBehalfOfName = sender
    newEMail.To = receiver
Next

您可能还需要在此之后保存它。您使用上面的代码保留对对象的引用 - 在被移动之后。

以下内容:

email.SentOnBehalfOfName = sender
email.To = receiver

仅修改原始电子邮件(并且不移动后的电子邮件)。它与新的电子邮件/邮件对象没有关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多