如何映射哪个签名属于outlook中的哪个电子邮件帐户?

时间:2014-09-04 05:13:45

标签: vba outlook

我在outlook中配置了3个电子邮件帐户。 签名存储在" AppData \ Roaming \ Microsoft \ Signatures \"位置。

使用vba,如何映射哪个签名属于哪个帐户?

1 个答案:

答案 0 :(得分:0)

签名的名称存储在可通过IOlkAccountManager MAPI界面访问的帐户配置文件数据中。由于该接口是扩展MAPI,因此只能使用C ++或Delphi进行访问。如果单击IOlkAccountManager按钮,则可以在OutlookSpy中查看界面及其数据。

Outlook对象模型不会公开签名或访问帐户的任意属性。

如果使用Redemption是一个选项,则可以使用其RDOAccount对象(可以使用任何语言访问,包括VBA)。新的消息签名名称存储在0x0016001F属性中,回复签名在0x0017001F中。

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set Accounts = Session.Accounts
  for each Account in Accounts.GetOrder(2) 'all mail accounts
    Debug.Print Account.Name
    newMessageSignature = Account.Fields(&H0016001F)
    if TypeName(newMessageSignature) <> "String" Then newMessageSignature = ""
    replySignature = Account.Fields(&H0017001F)
    if TypeName(replySignature) <> "String" Then replySignature = ""
    Debug.Print "  new message: " &  newMessageSignature & ", reply: " & replySignature
  next