通过MS Access VBA / Outlook发送电子邮件,选择发送配置文件

时间:2013-07-31 16:52:36

标签: vba ms-access outlook

我正在查看此处另一个问题的代码片段(MS Access VBA):https://stackoverflow.com/a/17975507/1085885

现在,此代码仅在Outlook打开时运行时才有效。这段代码有没有办法“打开Outlook”,然后运行所有发送代码?

其次,如何选择要发送的Outlook配置文件?我可以访问几个不同的配置文件,它从我的主要收件箱发送,但我希望它来自我的第二个收件箱。

2 个答案:

答案 0 :(得分:0)

您需要登录指定的个人资料。创建Outlook应用程序的实例后

Set oApp = CreateObject("Outlook.application")

添加如下内容:

set oNS = oApp.GetNamespace.Logon
oNS.Logon("MyProfileName")

请注意,如果Outlook已在运行,则Logon将不执行任何操作。您将需要使用扩展MAPI(C ++或Delphi或MAPI包装器,如RedemptionRDOSession。登录)来登录到指定的配置文件。

为什么不使用单个配置文件并创建多个accpunts?然后,您可以设置MailItem.SendUsaingAccount属性以指定特定帐户。

答案 1 :(得分:0)

以这种方式试试。

Private Sub Command1_Click()

Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem

On Error Resume Next


'Get Outlook if it's running
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
    'Outlook wasn't running, start it from code
    Set oOutlookApp = CreateObject("Outlook.Application")
    bStarted = True
End If

'Create a new mailitem
Set oItem = oOutlookApp.CreateItem(olMailItem)

With oItem
    'Set the recipient for the new email
   .To = "receiver@gmail.com"

    .Send
End With

If bStarted Then
'    'If we started Outlook from code, then close it
    oOutlookApp.Quit
End If

'Clean up
Set oItem = Nothing
Set oOutlookApp = Nothing



End Sub