复制新电子邮件以寻址自定义窗体Outlook 2010

时间:2014-04-03 08:17:12

标签: email outlook-vba outlook-2010

提前致谢。方案是:当创建包含在“收件人”字段中预先填充的地址然后单击自定义表单按钮的新电子邮件时,将该电子邮件复制到自定义表单的“收件人”字段中并关闭原始新电子邮件。 (基本上用预先填充了原始“收件人”地址的表格替换原始常规电子邮件)。

“自定义”表单工作正常,但我很困惑如何在表单打开时如何与第一封电子邮件中的数据进行对话或将数据拉到表单中。

2 个答案:

答案 0 :(得分:0)

遍历MailItem.Recipients集合,读取每个收件人的名称和地址属性,在新邮件上调用MailItem.Recipients.Add。如果是SMTP地址,请传递"名称"到Recipeints.Add,如果EX地址只传递EX地址。

您还可以尝试使用Recipient.PropertyAccessor读取PR_ENTRYID,PR_DISPLAY_NAME,PR_EMAIL_ADDRESS属性,并使用Recipient.PropertyAccessor.SetProperty在新邮件上设置它们,以确保收件人已解析并且看起来与原始邮件完全相同。

答案 1 :(得分:0)

我修改了打开自定义表单的宏。我已经在每封电子邮件上显示的快速启动工具栏中添加了一个按钮。 Macro获取电子邮件#1的To字段中的地址,启动自定义表单,将地址放入自定义表单的To字段,然后关闭原始邮件(电子邮件#1)。

Public Sub ComplexCustomForm()
 Dim olfolder As Outlook.MAPIFolder
 Dim olapp As Outlook.Application
 Dim Items As Outlook.Items
 Dim Item As Object
 Dim m As mailItem

 Set m = ActiveInspector.CurrentItem
 f = m.To
 Set olapp = CreateObject("Outlook.Application")
 Set olfolder = olapp.GetNamespace("Mapi").folders("SHARED FOLDER WHERE IPM.Note RESIDES")

 Set Items = olfolder.Items
 Set Item = Items.Add("IPM.Note.ComplexCustomForm")
 Item.Display
 Item.To = f
 m.Close olDiscard

 Set m = Nothing
 Set olfolder = Nothing
 Set olapp = Nothing
 Set Items = Nothing
 Set Item = Nothing
End Sub