通过Outlook从Access VBA发送自动电子邮件

时间:2013-10-08 19:24:11

标签: vba ms-access outlook-2010

好的,所以我一直在乐队的帮助下放一个简单的代码片段,以便发送电子邮件。我一直试图做的是收到一封通过outlook发送的电子邮件。我的第一个问题是runtime object define 287,位于以下行:

Set appOutlookRec = appOutlookMsg.Recipients.Add

所以为了反驳我的补充:

Set objNS = appOutlook.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)

那就阻止了那个。现在电子邮件将会形成,我可以使用.display查看我的电子邮件,但当我尝试使用.send时,Outlook实例会在电子邮件实际发送之前关闭。

为了反驳我强迫outlook打开,但我想检查一个实例是否已经打开。要打开收件箱,请使用:

Set appOutlook = CreateObject("Outlook.Application")
Set objNS = appOutlook.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
olFolder.Display

我是否使自动化过程复杂化?或者我是否在正确的道路上,有人可以帮助检查是否在资源管理器窗口中打开了Outlook实例?

由于

更新

Const olMailItem = 0
Const olTo = 1
Const olCC = 2
Const olFolderInbox = 6
Dim appOutlook As Object
Dim appOutlookMsg As Object
Dim appOutlookRec As Object
Dim objNS As Object
Dim olFolder As Object

Set appOutlook = CreateObject("Outlook.Application")
Set objNS = appOutlook.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
olFolder.Display

'Create a new empty email message
Set appOutlookMsg = appOutlook.CreateItem(olMailItem)

With appOutlookMsg
Set appOutlookRec = appOutlookMsg.Recipients.Add("....@gmail.com")
    appOutlookRec.Type = olTo
    .Subject = "Testing Closed Tickets"
    .Body = "This is just a test."
    '.Display
    .Send
End With

Set appOutlookMsg = Nothing
Set appOutlook = Nothing
Set appOutlookRec = Nothing

1 个答案:

答案 0 :(得分:1)

之前我遇到过类似的事情,我想通常可以通过在发送之前保存电子邮件来避免错误:

appOutlookMsg.Save
appOutlookMsg.Send