我在outlook中配置了3个电子邮件帐户。 签名存储在" AppData \ Roaming \ Microsoft \ Signatures \"位置。
使用vba,如何映射哪个签名属于哪个帐户?
答案 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