我正在制作一个用于Outlook 2013的宏,其想法是有人加载模板以回复电子邮件,然后运行填充某些信息的宏,例如模板:
“Hello [FName],在此日期:[日期]”
我有一个代码用当前日期替换[Date],但是我无法从当前位于电子邮件中To ...字段的联系人处获取名字。 我目前的猜测是使用Application.ActiveInspector.CurrentItem,并以某种方式设置一个ContactCard对象等于:Application.ActiveInspector.CurrentItem.Recipient
到目前为止我的代码是:
Set Insp = Application.ActiveInspector
Set obj = Insp.CurrentItem
Set contact = obj.To
obj.Body = Replace(obj.Body, "[Date]", Format(Now, "MMMM dd, yyyy"))
obj.Body = Replace(obj.Body, "[FName]", contact.Name)
答案 0 :(得分:1)
首先,要检索收件人,请使用MailItem.Recipients集合。
绝对不能保证您的“联系人”文件夹中会有匹配的联系人。您当然可以尝试找到一个 - 使用Namespace.GetDefaultFolder(olFolderContacts)检索默认的Contacts文件夹,然后使用ContactsFolder.Items.Find([Email1Address = 'user@company.demo'])
之类的内容进行搜索。如果您找回联系人,则可以使用ContactItem.FirstName。
如果邮件正在发送到同一域中的Exchange邮箱,则可以尝试使用Recipient.AddressEntry.GetExchangeUser。如果您返回ExchangeUser对象,则可以使用ExchangeUser.FirstName。
如果所有其他方法都失败了,您可以尝试解析Recipient.Name属性,以假设“First Last”或“Last,First”格式提取名字和姓氏。
最后,如果联系人卡片中显示的Outlook来自Facebook或LinkedIn,则无法以编程方式访问详细信息。您可以尝试使用Redemption及其RDOSocialConnectors对象 - 它允许在社交网络中搜索具有给定地址的人(Recipient.Address)。