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