【发布时间】: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
到目前为止,除了我无法弄清楚如何用实际的附件文件数据填充帖子变量“附件”之外,它提交了所有内容。这甚至可能吗?
【问题讨论】:
-
那是Excel,excel没有附件
-
将附件保存到磁盘,这一步之后也是一样的。 slipstick.com/developer/save-attachments-to-the-hard-drive
标签: vba outlook email-attachments