使用Outlook中的VBA读取带附件的电子邮件正文

时间:2014-01-02 12:35:45

标签: vba outlook outlook-2010

我有一些VBA在收到每个邮件的主题后立即检查邮件的主题,并通过http将某些电子邮件的内容提交给服务器进行处理。

这适用于没有附件的邮件,但如果邮件中有附件则会失败。我正在使用http GET提交文本。

附件的存在对邮件正文属性的影响是什么,如何忽略附件并仅提交电子邮件正文?

VBA(为了清晰而修剪但完整且功能齐全):

声明:

Option Explicit
Private WithEvents olInboxItems As Items

启动时:

Private Sub Application_Startup()
    Set olInboxItems = Session.GetDefaultFolder(olFolderInbox).Items
End Sub

关于添加到收件箱的项目:

Private Sub olInboxItems_ItemAdd(ByVal Item As Object)

    On Error Resume Next

    Dim olMailItem As MailItem
    Dim strAttachmentName As String
    Dim submitResult As String

    If TypeOf Item Is MailItem Then
        Set olMailItem = Item

        If ((InStr(olMailItem.subject, "test subject") > 0)
            Dim subject As String
            subject = olMailItem.subject
            Dim contents As Variant
            contents = olMailItem.body
            Dim submitURL As String
            submitURL = "http:// ... " & subject & "..." & contents & "..."
            XMLHttpSynchronous submitURL
        End If
    End If
    Set Item = Nothing
    Set olMailItem = Nothing
End Sub

Http提交:

Sub XMLHttpSynchronous(ByVal URL As String)
    Dim XMLHttpRequest As XMLHTTP

    Set XMLHttpRequest = New MSXML2.XMLHTTP

    XMLHttpRequest.Open "GET", URL, False
    XMLHttpRequest.Send

End Sub

编辑:我现在使用以下代码剥离附件(已测试并正常工作),但网址仍未正确提交。

    Set myattachments = olMailItem.Attachments
    While myattachments.Count > 0
        myattachments.Remove 1
    Wend

编辑2:我设置了contents = subject并正确提交了网址,即使邮件被删除附件后,仍然没有运气电子邮件的正文

1 个答案:

答案 0 :(得分:0)

为了实现这一点,我在第一次编辑中使用代码剥离了附件,而不是将主体文本的字符串分开到第一个和最后一个字符。我不确定为什么会这样做