微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法像 MailItem.Reply 一样在 RDOMMail.Reply 中保留签名?

如何解决有没有办法像 MailItem.Reply 一样在 RDOMMail.Reply 中保留签名?

我尝试使用 RDOMMail.Reply 方法获取邮件回复。 但是,在检查返回的对象后,我注意到签名不是 HTMLBody 属性的一部分,就像使用方法 MailItem.Reply 时一样(我没有使用它,因为它抛出 0x80004004 (E_ABORT) 异常)。此外,如果签名包含图像,则签名所需的附件不会像 MailItem.Reply 那样保留。 我尝试使用 Signature 对象单独应用签名。这会向 HTMLBody 添加签名,但不使用 _MailAutoSig 属性标记签名部分,因此如果我从 Outlook 功能区中选择“更改签名”,签名不会被替换,因为 Outlook 无法知道它是签名。

有没有办法从包含 Outlook 知道如何替换的签名的 RDOMMail 获取回复

    var rdoMail = session.GetMessageFromID(entryid);
    var reply = rdoMail.Reply();
    reply.HTMLBody = "";
    var Account = session.Accounts.Getorder(rdoAccountCategory.acMail).Item(1);
    var signature = Account.ReplySignature;
    signature.ApplyTo(reply,false);
    reply.Save();

解决方法

这是处理扩展 MAPI 代码时的一个已知问题/案例,它仅与兑换无关。有关详细信息,请参阅 Messages that are created outside Outlook do not include the default Outlook email signature

您的选择是:

  1. 通过向邮件正文添加所有必要的部分(如 _MailAutoSig 属性)来模仿 Outlook 行为。
  2. 将 Outlook 对象模型与 Reply 方法结合使用,然后使用 GetRDOObjectFromOutlookObject 方法获取等效的 Redemption。但据我所知,看看你得到的异常,这是不可能的,因为代码是从辅助线程中使用的,对吗?
  3. 您可以使用其 RDOAccount 对象(可以使用任何语言访问,包括 VBA)。新消息签名名称存储在 0x0016001F 属性中,回复签名存储在 0x0017001F 中。 您还可以使用 RDOAccount.ReplySignatureNewSignature 属性。
    Redemption 还公开 RDOSignature.ApplyTo 方法,该方法采用指向 RDOMail 对象的指针并在指定位置插入签名,正确合并图像和样式:
    set Session = CreateObject("Redemption.RDOSession")
    Session.MAPIOBJECT = Application.Session.MAPIOBJECT
    set Drafts = Session.GetDefaultFolder(olFolderDrafts)
    set   Msg = Drafts.Items.Add
    Msg.To =   "user@domain.demo"
    Msg.Subject  = "testing signatures"
    Msg.HTMLBody = "<html><body>some <b>bold</b> message text</body></html>"
    set Account = Session.Accounts.GetOrder(2).Item(1)   'first mail account
    if  Not (Account  Is  Nothing)  Then
         set Signature = Account.NewMessageSignature
         if  Not (Signature  Is  Nothing)  Then
           Signature.ApplyTo Msg,false   'apply at the bottom
         End If
    End If
    Msg.Send

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?