VBA Outlook附件发布到URL

VBA Outlook附件发布到URL,vba,outlook,email-attachments,Vba,Outlook,Email Attachments,我已经为outlook创建了一个宏,它打开一个用户表单,询问一些问题以供选择,然后有一个提交按钮将消息和用户表单数据发送到POST url(我们的票务系统)。我被附件的最后一部分卡住了。我可以查看附件列表并循环查看附件项对象,但我不知道要调用哪个对象将实际文件数据发送到POST表单。。。我只能看到文件大小、文件名等 我可以从哪里获得文件内容和mime类型,以便将它们作为表单变量添加到URL post操作中 Public senderaddress As String Public thisEma

我已经为outlook创建了一个宏,它打开一个用户表单,询问一些问题以供选择,然后有一个提交按钮将消息和用户表单数据发送到POST url(我们的票务系统)。我被附件的最后一部分卡住了。我可以查看附件列表并循环查看附件项对象,但我不知道要调用哪个对象将实际文件数据发送到POST表单。。。我只能看到文件大小、文件名等

我可以从哪里获得文件内容和mime类型,以便将它们作为表单变量添加到URL post操作中

Public senderaddress As String
Public thisEmailContent As String
Public thisEmailTEXT As String
Public thisStaffMember As Integer
Public emailAttachments As String

Sub MacroName()
    thisStaffMember = 1
    Set objItem = GetCurrentItem()
    senderaddress = objItem.SenderEmailAddress
    thisEmailContent = objItem.HTMLBody
    thisEmailTEXT = objItem.Body
    emailAttachments = objItem.Attachments
    UserformName.Show
End Sub

Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application
    Set objApp = Application
    On Error Resume Next
    Select Case TypeName(objApp.ActiveWindow)
        Case "Explorer"
        Set GetCurrentItem = _
        objApp.ActiveExplorer.Selection.Item(1)
        Case "Inspector"
        Set GetCurrentItem = _
        objApp.ActiveInspector.CurrentItem
    Case Else
    End Select
End Function
然后这里是用户表单代码的最后一部分,当点击立即发送按钮时,它实际上会将数据发送到我们的票证系统

Public Function encodeURL(str As String)
    Dim ScriptEngine As Object
    Dim encoded As String

    Set ScriptEngine = CreateObject("scriptcontrol")
    ScriptEngine.Language = "JScript"

    encoded = ScriptEngine.Run("encodeURIComponent", str)

    encodeURL = encoded
End Function

Private Sub SendNow_Click()
    Set sendReq = CreateObject("MSXML2.XMLHTTP")
    With sendReq
        .Open "POST", "https://ticketsystemurl.whatever/outlookinterface.php?action=openticket&fromEmail=" & encodeURL(senderaddress) & "&selectedCustomer=" & encodeURL(CustomerSelect.Value) & "&selectedContact=" & encodeURL(ContactSelect.Value), False
        .setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        .setRequestHeader "Content-type", "application/x-www-form-urlencoded"
        .Send ("notifyCustomer=" & NotifyCustomer.Value & "&staffID=" & thisStaffMember & "&emailContent=" & encodeURL(thisEmailContent) & "&emailTEXT=" & encodeURL(thisEmailTEXT) & "&appendTicket=" & AppendToTicket.Value & "&createNewTicket=" & CreateNewTicket.Value & "&selectedTicket=" & encodeURL(SelectTicket.Value) & "&attachments=" & encodeURL(emailAttachments))
    End With

    Unload Me
End Sub

到目前为止,它提交了所有内容,但我不知道如何用实际的附件文件数据填充post var“attachments”。这可能吗?

Outlook不会为您这样做。您需要将附件另存为文件(
attachment.SaveAsFile
),然后读取该文件(对象?)的内容,以便在web请求中使用它。

这是Excel,Excel没有附件将附件保存到磁盘,在该步骤后也一样。