【问题标题】:VBA Outlook attachments post to URLVBA Outlook 附件发布到 URL
【发布时间】:2018-06-18 00:55:32
【问题描述】:

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

有什么想法可以获取文件内容和 mime 类型,以便将它们作为表单变量添加到 URL 发布操作中?

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

到目前为止,除了我无法弄清楚如何用实际的附件文件数据填充帖子变量“附件”之外,它提交了所有内容。这甚至可能吗?

【问题讨论】:

标签: vba outlook email-attachments


【解决方案1】:

Outlook 不会为您这样做。您需要将附件保存为文件 (Attachment.SaveAsFile),然后读取该文件的内容 (Scripting.FileSystemObject object?) 以在您的网络请求中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多