【问题标题】:Outlook Custom Forms: Sending User-Defined Fields in HTMLOutlook 自定义表单:在 HTML 中发送用户定义的字段
【发布时间】:2016-05-10 13:27:54
【问题描述】:

我已经断断续续地解决这个问题大约 3 周了。我创建了一个 Outlook 自定义表单,让用户可以输入我创建的用户定义字段(我们称之为 myField1myField2)以及标准 收件人、抄送主题日期字段。

用户填写表单,单击发送,而不是将自定义表单发送给收件人,我希望它发送(HTML?)我的用户定义字段并关闭表单窗口。这允许收件人查看和打印输入的字段并在 Outlook 的预览窗格中呈现可读性。我是否应该探索 Outlook 区域表单以完成我想要做的事情?我现在拥有的代码不会产生错误,但它什么也没做! - 表格作为表格发送。我只能访问 Outlook 2010 中的脚本编辑器。非常令人沮丧..

Function Item_Send()
'Dim olApp As Outlook.Application
'Dim objNS As Outlook.NameSpace
'Dim mailItem As Outlook.mailItem

 Set olApp = CreateObject("Outlook.Application")

'Outlook.ApplicationClass _app = new Outlook.ApplicationClass();
'Outlook.Application olApp = (Outlook.Application)_app
'Outlook.NameSpace olNameSpace = _app.GetNamespace("MAPI")

'Create mail item
'Set objMail = myOlApp.GetItem(OlItemType.olMailItem)
 Set mailItem = Application.CreateItem(olMailItem)
'Outlook.mailItem mailItem = (Outlook.mailItem)olApp.CreateItem(Outlook.OlItemType.olMailItem)

'With mailItem
   mailItem.Subject = item.Subject
   mailItem.Recipients.Add ("emails that I typed into the To: box")
   mailItem.Body = "This is the Body of an e-mail message"
  'Set body format to HTML
   mailItem.BodyFormat = 2
   mailItem.HTMLBody = "<HTML><H2>The body of this message will appear in HTML.</H2><BODY>Type the message text here. </BODY></HTML>"
   mailItem.Send()
'End With

'Set olMailItem = Nothing
Set olApp = Nothing
End Function

【问题讨论】:

    标签: html forms vba email outlook


    【解决方案1】:

    您仍然需要生成包含自定义字段的名称和值的 HTML 标记。所需要的只是一些明智的字符串构建,你会得到你想要的内容。您可以通过 MailItem 访问您的自定义字段。 UserProperties.Find 方法。为您的每个字段调用该方法并从 UserProperty.Name 和 .Value 属性填充您的 HTML。

    【讨论】:

    • 我发现身体是最容易的部分,并将它留到最后。
    【解决方案2】:

    看起来您需要在消息正文中包含用户属性(与您的自定义控件相关联)值。要完成工作,您可以处理 Application 类的 ItemSend 事件,只要用户通过检查器发送 Microsoft Outlook 项目就会触发该事件(在检查器关闭之前,但在用户单击发送按钮之后) ) 或在程序中使用 Outlook 项目(如 MailItem)的 Send 方法时。我想你已经这样做了,如果是这样的话......

    首先,不需要在 ItemSend 事件处理程序中创建新的 Outlook 应用程序实例:

    Function Item_Send()
     'Set olApp = CreateObject("Outlook.Application")
     Set olApp = Application
    

    请改用Application 属性。

    其次,ItemSend 事件处理程序应如下所示:

    Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean) 
    

    无需创建新的 MailItem 实例,您已经可以访问现有项目。正在发送的项目作为参数传递给处理程序。

    【讨论】:

    • 我完全重新编写了代码并且卡在传递用户在自定义表单上解析的“To:”字段。所以我想将“To:”字段传递给我的 newMsg 项目,但它只是传递的用户名。这就是问题所在:该用户名是一个相当通用的用户名,因此无法针对 GAL 进行解析。为什么我不能只传递用户在我的 newMsg 中输入的良好解析收件人?我假设现在我必须处理命名空间和会话?
    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 2019-12-11
    相关资源
    最近更新 更多