【发布时间】:2017-07-09 23:10:50
【问题描述】:
我正在 Outlook VBA 中编写一个脚本来记录 Access 数据库中的每封电子邮件,因为它们进入我的收件箱。我触发的代码没有问题。它可以毫无问题地访问 Access 数据库。它可以毫无问题地复制主题。然后它到达身体并且根本不复制任何内容。我尝试过 .HTMLbody 之类的东西,而不仅仅是 .Body,但这又显示了一个空的正文。我的代码如下:
Option Explicit
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim objNS As Outlook.NameSpace
Dim objEmail As Outlook.MailItem
Dim strIDs() As String
Dim intX As Integer
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim sDb As String
Dim sSQL As String
Dim qdf As QueryDef
strIDs = Split(EntryIDCollection, ",")
For intX = 0 To UBound(strIDs)
Set objNS = Application.GetNamespace("MAPI")
Set objEmail = objNS.GetItemFromID(strIDs(intX))
sDb = "C:\Users\######\Documents\EmailDatabase.accdb"
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(sDb)
sSQL = "INSERT INTO AllEmails (Subject,Message) Values ('" & objEmail.Subject & "','" & objEmail.HTMLBody & "')"
Set qdf = db.CreateQueryDef("", sSQL)
qdf.Execute dbFailOnErro
MsgBox objEmail.HTMLBody
Next
Set objEmail = Nothing
End Sub
如果有人知道我做错了什么,请告诉我。三个小时的谷歌搜索似乎没有排序!
【问题讨论】:
-
您的消息框也没有返回任何内容吗?
-
是的@Jordan 消息框打开(所以没有抛出错误)但里面什么都没有。
-
单步执行您的代码 (F8) 并在分配后在您的 Locals 窗口中查看
objEmail。展开变量时,看看是否有body属性。想知道GetItemFromID是否真的返回了MailItem -
刚刚试过@click,有一个
body属性设置为一个空字符串。我可以看到主题字符串和其他一切都很好,但没有body。之前也忘了提,这是在 IMAP 帐户上,这有什么不同吗? -
之前问过同样的问题stackoverflow.com/questions/23601992/… 那里的评论暗示如果请求应该加载的正文可能尚未加载。