【问题标题】:Read body of email with attachment using VBA in Outlook在 Outlook 中使用 VBA 阅读带附件的电子邮件正文
【发布时间】:2014-01-19 21:52:41
【问题描述】:

我有一些 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

编辑:我现在正在使用以下代码(经过测试和工作)剥离附件,但 url 仍然没有正确提交。

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

编辑 2:我设置了 contents=subject 并且正确提交了 url,但电子邮件的正文仍然没有运气,即使在邮件中删除了附件

【问题讨论】:

  • body 属性应该是一个字符串,但是可能 HTML 或 RTF 字符实际上是在弄乱您的 URL?也许在发送到您的服务器之前尝试去除附件(即 olMainItem.Attachments)?
  • 好的,我在这里可能错了,但 Get 不允许 URL 中只包含 256 个字符?这可能是一回事,MailItem.Body 不包含任何与附件相关的内容。它纯粹包含电子邮件的内容。所以很难相信是执着造成了这里的问题。我同意 Marcin 的观点,这里的问题可能是特殊字符或字符串的长度。
  • 嘿@Marcin,我添加了 Set myattachments = olMailItem.Attachments While myattachments.Count > 0 myattachments.Remove 1 Wend,它正确地剥离了附件,但仍然没有提交电子邮件的正文。感谢您的建议
  • @Vikas 邮件正文少于 256 个字符
  • 您遇到的错误是什么?

标签: vba outlook outlook-2010


【解决方案1】:

为了使这项工作正常进行,我在第一次编辑中用代码剥离了附件,而不是在第一个和最后一个字符周围分割正文文本的字符串。我不确定为什么会这样

【讨论】:

    猜你喜欢
    • 2011-12-21
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2022-06-13
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多